You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Mansour Al Akeel <ma...@gmail.com> on 2012/11/10 18:38:06 UTC

accessing a spring bean methods from sitemap

I need to link documents through some identification. For example,
assuming that I have:

articles/my-first-article.xml
articles/second-one.xml
articles/hello-world-article.xml

books/book1.xml  which has  references to  artice-1 and article-3
identified by an id of the form: A001

I need to create a hashtable linking both so that I pass query param
by ID or by name. The idea I have is to initialize spring bean that
will extract the data from these files,
and construct a Map<String,String>.

My question is how can I access this HashTable from sitemap ??

I am using C2.2.

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


Re: accessing a spring bean methods from sitemap

Posted by Javier Puerto <jp...@gmail.com>.
2012/11/10 Thorsten Scherler <sc...@gmail.com>

> Hi Mansour,
>
> Javier is on a flight to Zürich ATM but I know what code he is talking
> about.
>

Yeah, for an input module. If you want to access from a flowscript as
Francesco suggested you can use this:

var yourComponentInstance = cocoon.getComponent("BEAN-ID");


>
> I read between the lines that you are on 2.2. If you happen to be on 3
> then the whole thing is much straight forward.
>
> I am not sure whether the following is the best approach for your problem
> since it depends on where you want to come the hashMap from. Next outlines
> how to access one from spring.
>
> in your spring file you have to add the ns declaration and something like
> the following:
> <!--ns-->
> xmlns:util="http://www.**springframework.org/schema/**util<http://www.springframework.org/schema/util>
> "
>   xsi:schemaLocation="...
> http://www.springframework.**org/schema/util<http://www.springframework.org/schema/util>
> http://www.springframework.**org/schema/util/spring-util-2.**5.xsd<http://www.springframework.org/schema/util/spring-util-2.5.xsd>
> "
>
> <bean id="collection"
> name="org.apache.cocoon.**components.modules.input.**
> InputModule/collection"
>     class="es.sadesi.module.input.**Collection">
>     <property name="map" ref="sections"/>
> </bean>
>
> <util:map id="sections" map-class="java.util.HashMap">
>   <entry key="0" value="0. Disposiciones estatales" />
>   <entry key="1" value="1. Disposiciones generales" />
>   <entry key="2" value="2. Autoridades y personal" />
>   <entry key="2.1" value="2.1. Nombramientos, situaciones e incidencias" />
>   <entry key="2.2" value="2.2. Oposiciones, concursos y otras
> convocatorias" />
>   <entry key="3" value="3. Otras disposiciones" />
>   <entry key="4" value="4. Administración de justicia" />
>   <entry key="5" value="5. Anuncios" />
>   <entry key="5.1" value="5.1. Licitaciones públicas y adjudicaciones" />
>   <entry key="5.2" value="5.2. Otros anuncios oficiales" />
> </util:map>
>
> Then create a es.sadesi.module.input.**Collection class with something
> like
> package es.sadesi.module.input;
>
> import java.util.Map;
>
> import org.apache.avalon.framework.**configuration.Configuration;
> import org.apache.avalon.framework.**configuration.**
> ConfigurationException;
> import org.apache.cocoon.components.**modules.input.**AbstractInputModule;
> import org.apache.cocoon.components.**modules.input.InputModule;
> import org.springframework.beans.**factory.annotation.Required;
>
> public class Collection extends AbstractInputModule {
>     private InputModule map;
>
>     public Object getAttribute(String name, Configuration modeConf,
>             Map objectModel) throws ConfigurationException {
>
>         final Object result =  map.getAttribute(name, null, null);
>         return result;
>
>     }
>
>     public Object getAttribute(String name) throws ConfigurationException {
>       return getAttribute(name, null, null);
>     }
>
>     @Required
>     public void setMap(InputModule map) {
>         this.map = map;
>     }
> }
>
> then use it in your sitemap with
> {collection:2.2} which should return "2.2. Oposiciones, concursos y otras
> convocatorias"
>
> That should work in 2.2 (I have no time to test it so it may miss
> something in the extraction of the customer use case but it should get you
> started).
>
> HTH
>
> salu2
>
>
> On 11/10/2012 08:07 PM, Mansour Al Akeel wrote:
>
>> Javier,
>> thank you.
>> The module I am going to implement is to be used by one block only,
>> and would love to be able to declare it in the sitemap.xmap.
>> I haven't implemented input modules before, but reading this:
>>
>> http://cocoon.apache.org/2.1/**userdocs/concepts/modules.html<http://cocoon.apache.org/2.1/userdocs/concepts/modules.html>
>>
>>
>> "Step 1: Making a new module known to Apache Cocoon
>>
>> Like other core components of Apache Cocoon, modules are declared in
>> cocoon.xconf. There are already too many to list here.
>>
>> <input-modules>
>>    <component-instance name="request"
>>    class="org.apache.cocoon.**components.modules.input.**
>> RequestParameterModule"/>
>> .....
>> "
>>
>> since I am developing with maven and jetty, and doing it in on block,
>> I like to declare this new input module in the sitemap.xmap or in the
>> same block (jar).
>>
>> Is there a way to do this ??
>>
>>
>>
>>
>> On Sat, Nov 10, 2012 at 1:09 PM, Javier Puerto <jp...@gmail.com> wrote:
>>
>>> I did something similar for a client. We did it with a custom input
>>> module
>>> so you can define a protocol on when the input is the key an the output
>>> the
>>> value.
>>>
>>> Also I can't access to my laptop now but I have an example about
>>> accessing
>>> to spring beans from flow script, probably the input module it's enough.
>>>
>>> Salu2
>>>
>>> El 10/11/2012 18:41, "Francesco Chicchiriccò" <il...@apache.org>
>>> escribió:
>>>
>>>  On 10/11/2012 18:38, Mansour Al Akeel wrote:
>>>>
>>>>> I need to link documents through some identification. For example,
>>>>> assuming that I have:
>>>>>
>>>>> articles/my-first-article.xml
>>>>> articles/second-one.xml
>>>>> articles/hello-world-article.**xml
>>>>>
>>>>> books/book1.xml  which has  references to  artice-1 and article-3
>>>>> identified by an id of the form: A001
>>>>>
>>>>> I need to create a hashtable linking both so that I pass query param
>>>>> by ID or by name. The idea I have is to initialize spring bean that
>>>>> will extract the data from these files,
>>>>> and construct a Map<String,String>.
>>>>>
>>>>> My question is how can I access this HashTable from sitemap ??
>>>>>
>>>>> I am using C2.2.
>>>>>
>>>> Hi,
>>>> I don't think there is any direct way to access an Hashtable from the
>>>> sitemap: maybe the only chance is to get to it through flowscript...
>>>>
>>>> Don't have idea of how to access a Spring bean from flowscript,
>>>> though... any C2.2. expert around?
>>>>
>>>> Regards.
>>>>
>>>> --
>>>> Francesco Chicchiriccò
>>>>
>>>> ASF Member, Apache Cocoon PMC and Apache Syncope PPMC Member
>>>> http://people.apache.org/~**ilgrosso/<http://people.apache.org/~ilgrosso/>
>>>>
>>>>
>>>> ------------------------------**------------------------------**
>>>> ---------
>>>> To unsubscribe, e-mail: users-unsubscribe@cocoon.**apache.org<us...@cocoon.apache.org>
>>>> For additional commands, e-mail: users-help@cocoon.apache.org
>>>>
>>>>  ------------------------------**------------------------------**
>> ---------
>> To unsubscribe, e-mail: users-unsubscribe@cocoon.**apache.org<us...@cocoon.apache.org>
>> For additional commands, e-mail: users-help@cocoon.apache.org
>>
>>
>
> --
> Thorsten Scherler <scherler.at.gmail.com>
> codeBusters S.L. - web based systems
> <consulting, training and solutions>
>
> http://www.codebusters.es/
>
>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.**apache.org<us...@cocoon.apache.org>
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>

Re: accessing a spring bean methods from sitemap

Posted by Thorsten Scherler <sc...@gmail.com>.
Hi Mansour,

Javier is on a flight to Zürich ATM but I know what code he is talking 
about.

I read between the lines that you are on 2.2. If you happen to be on 3 
then the whole thing is much straight forward.

I am not sure whether the following is the best approach for your 
problem since it depends on where you want to come the hashMap from. 
Next outlines how to access one from spring.

in your spring file you have to add the ns declaration and something 
like the following:
<!--ns-->
xmlns:util="http://www.springframework.org/schema/util"
   xsi:schemaLocation="...
http://www.springframework.org/schema/util 
http://www.springframework.org/schema/util/spring-util-2.5.xsd"

<bean id="collection"
name="org.apache.cocoon.components.modules.input.InputModule/collection"
     class="es.sadesi.module.input.Collection">
     <property name="map" ref="sections"/>
</bean>

<util:map id="sections" map-class="java.util.HashMap">
   <entry key="0" value="0. Disposiciones estatales" />
   <entry key="1" value="1. Disposiciones generales" />
   <entry key="2" value="2. Autoridades y personal" />
   <entry key="2.1" value="2.1. Nombramientos, situaciones e incidencias" />
   <entry key="2.2" value="2.2. Oposiciones, concursos y otras 
convocatorias" />
   <entry key="3" value="3. Otras disposiciones" />
   <entry key="4" value="4. Administración de justicia" />
   <entry key="5" value="5. Anuncios" />
   <entry key="5.1" value="5.1. Licitaciones públicas y adjudicaciones" />
   <entry key="5.2" value="5.2. Otros anuncios oficiales" />
</util:map>

Then create a es.sadesi.module.input.Collection class with something like
package es.sadesi.module.input;

import java.util.Map;

import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.cocoon.components.modules.input.AbstractInputModule;
import org.apache.cocoon.components.modules.input.InputModule;
import org.springframework.beans.factory.annotation.Required;

public class Collection extends AbstractInputModule {
     private InputModule map;

     public Object getAttribute(String name, Configuration modeConf,
             Map objectModel) throws ConfigurationException {

         final Object result =  map.getAttribute(name, null, null);
         return result;

     }

     public Object getAttribute(String name) throws ConfigurationException {
       return getAttribute(name, null, null);
     }

     @Required
     public void setMap(InputModule map) {
         this.map = map;
     }
}

then use it in your sitemap with
{collection:2.2} which should return "2.2. Oposiciones, concursos y 
otras convocatorias"

That should work in 2.2 (I have no time to test it so it may miss 
something in the extraction of the customer use case but it should get 
you started).

HTH

salu2

On 11/10/2012 08:07 PM, Mansour Al Akeel wrote:
> Javier,
> thank you.
> The module I am going to implement is to be used by one block only,
> and would love to be able to declare it in the sitemap.xmap.
> I haven't implemented input modules before, but reading this:
>
> http://cocoon.apache.org/2.1/userdocs/concepts/modules.html
>
>
> "Step 1: Making a new module known to Apache Cocoon
>
> Like other core components of Apache Cocoon, modules are declared in
> cocoon.xconf. There are already too many to list here.
>
> <input-modules>
>    <component-instance name="request"
>    class="org.apache.cocoon.components.modules.input.RequestParameterModule"/>
> .....
> "
>
> since I am developing with maven and jetty, and doing it in on block,
> I like to declare this new input module in the sitemap.xmap or in the
> same block (jar).
>
> Is there a way to do this ??
>
>
>
>
> On Sat, Nov 10, 2012 at 1:09 PM, Javier Puerto <jp...@gmail.com> wrote:
>> I did something similar for a client. We did it with a custom input module
>> so you can define a protocol on when the input is the key an the output the
>> value.
>>
>> Also I can't access to my laptop now but I have an example about accessing
>> to spring beans from flow script, probably the input module it's enough.
>>
>> Salu2
>>
>> El 10/11/2012 18:41, "Francesco Chicchiriccò" <il...@apache.org>
>> escribió:
>>
>>> On 10/11/2012 18:38, Mansour Al Akeel wrote:
>>>> I need to link documents through some identification. For example,
>>>> assuming that I have:
>>>>
>>>> articles/my-first-article.xml
>>>> articles/second-one.xml
>>>> articles/hello-world-article.xml
>>>>
>>>> books/book1.xml  which has  references to  artice-1 and article-3
>>>> identified by an id of the form: A001
>>>>
>>>> I need to create a hashtable linking both so that I pass query param
>>>> by ID or by name. The idea I have is to initialize spring bean that
>>>> will extract the data from these files,
>>>> and construct a Map<String,String>.
>>>>
>>>> My question is how can I access this HashTable from sitemap ??
>>>>
>>>> I am using C2.2.
>>> Hi,
>>> I don't think there is any direct way to access an Hashtable from the
>>> sitemap: maybe the only chance is to get to it through flowscript...
>>>
>>> Don't have idea of how to access a Spring bean from flowscript,
>>> though... any C2.2. expert around?
>>>
>>> Regards.
>>>
>>> --
>>> Francesco Chicchiriccò
>>>
>>> ASF Member, Apache Cocoon PMC and Apache Syncope PPMC Member
>>> http://people.apache.org/~ilgrosso/
>>>
>>>
>>> ---------------------------------------------------------------------
>>> 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
>


-- 
Thorsten Scherler <scherler.at.gmail.com>
codeBusters S.L. - web based systems
<consulting, training and solutions>

http://www.codebusters.es/


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


Re: accessing a spring bean methods from sitemap

Posted by Mansour Al Akeel <ma...@gmail.com>.
Javier,
thank you.
The module I am going to implement is to be used by one block only,
and would love to be able to declare it in the sitemap.xmap.
I haven't implemented input modules before, but reading this:

http://cocoon.apache.org/2.1/userdocs/concepts/modules.html


"Step 1: Making a new module known to Apache Cocoon

Like other core components of Apache Cocoon, modules are declared in
cocoon.xconf. There are already too many to list here.

<input-modules>
  <component-instance name="request"
  class="org.apache.cocoon.components.modules.input.RequestParameterModule"/>
.....
"

since I am developing with maven and jetty, and doing it in on block,
I like to declare this new input module in the sitemap.xmap or in the
same block (jar).

Is there a way to do this ??




On Sat, Nov 10, 2012 at 1:09 PM, Javier Puerto <jp...@gmail.com> wrote:
> I did something similar for a client. We did it with a custom input module
> so you can define a protocol on when the input is the key an the output the
> value.
>
> Also I can't access to my laptop now but I have an example about accessing
> to spring beans from flow script, probably the input module it's enough.
>
> Salu2
>
> El 10/11/2012 18:41, "Francesco Chicchiriccò" <il...@apache.org>
> escribió:
>
>> On 10/11/2012 18:38, Mansour Al Akeel wrote:
>> > I need to link documents through some identification. For example,
>> > assuming that I have:
>> >
>> > articles/my-first-article.xml
>> > articles/second-one.xml
>> > articles/hello-world-article.xml
>> >
>> > books/book1.xml  which has  references to  artice-1 and article-3
>> > identified by an id of the form: A001
>> >
>> > I need to create a hashtable linking both so that I pass query param
>> > by ID or by name. The idea I have is to initialize spring bean that
>> > will extract the data from these files,
>> > and construct a Map<String,String>.
>> >
>> > My question is how can I access this HashTable from sitemap ??
>> >
>> > I am using C2.2.
>>
>> Hi,
>> I don't think there is any direct way to access an Hashtable from the
>> sitemap: maybe the only chance is to get to it through flowscript...
>>
>> Don't have idea of how to access a Spring bean from flowscript,
>> though... any C2.2. expert around?
>>
>> Regards.
>>
>> --
>> Francesco Chicchiriccò
>>
>> ASF Member, Apache Cocoon PMC and Apache Syncope PPMC Member
>> http://people.apache.org/~ilgrosso/
>>
>>
>> ---------------------------------------------------------------------
>> 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: accessing a spring bean methods from sitemap

Posted by Javier Puerto <jp...@gmail.com>.
I did something similar for a client. We did it with a custom input module
so you can define a protocol on when the input is the key an the output the
value.

Also I can't access to my laptop now but I have an example about accessing
to spring beans from flow script, probably the input module it's enough.

Salu2
El 10/11/2012 18:41, "Francesco Chicchiriccò" <il...@apache.org>
escribió:

> On 10/11/2012 18:38, Mansour Al Akeel wrote:
> > I need to link documents through some identification. For example,
> > assuming that I have:
> >
> > articles/my-first-article.xml
> > articles/second-one.xml
> > articles/hello-world-article.xml
> >
> > books/book1.xml  which has  references to  artice-1 and article-3
> > identified by an id of the form: A001
> >
> > I need to create a hashtable linking both so that I pass query param
> > by ID or by name. The idea I have is to initialize spring bean that
> > will extract the data from these files,
> > and construct a Map<String,String>.
> >
> > My question is how can I access this HashTable from sitemap ??
> >
> > I am using C2.2.
>
> Hi,
> I don't think there is any direct way to access an Hashtable from the
> sitemap: maybe the only chance is to get to it through flowscript...
>
> Don't have idea of how to access a Spring bean from flowscript,
> though... any C2.2. expert around?
>
> Regards.
>
> --
> Francesco Chicchiriccò
>
> ASF Member, Apache Cocoon PMC and Apache Syncope PPMC Member
> http://people.apache.org/~ilgrosso/
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>

Re: accessing a spring bean methods from sitemap

Posted by Francesco Chicchiriccò <il...@apache.org>.
On 10/11/2012 18:38, Mansour Al Akeel wrote:
> I need to link documents through some identification. For example,
> assuming that I have:
>
> articles/my-first-article.xml
> articles/second-one.xml
> articles/hello-world-article.xml
>
> books/book1.xml  which has  references to  artice-1 and article-3
> identified by an id of the form: A001
>
> I need to create a hashtable linking both so that I pass query param
> by ID or by name. The idea I have is to initialize spring bean that
> will extract the data from these files,
> and construct a Map<String,String>.
>
> My question is how can I access this HashTable from sitemap ??
>
> I am using C2.2.

Hi,
I don't think there is any direct way to access an Hashtable from the
sitemap: maybe the only chance is to get to it through flowscript...

Don't have idea of how to access a Spring bean from flowscript,
though... any C2.2. expert around?

Regards.

-- 
Francesco Chicchiriccò

ASF Member, Apache Cocoon PMC and Apache Syncope PPMC Member
http://people.apache.org/~ilgrosso/


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


Re: accessing a spring bean methods from sitemap

Posted by Mansour Al Akeel <ma...@gmail.com>.
Thank you all for helping in this.
Thorsten,
I went with you suggestion and it worked great just like expected.


On Sun, Nov 11, 2012 at 3:24 PM, Robby Pelssers <Ro...@nxp.com> wrote:
> Hi Mansour,
>
> I do know how to access spring beans from C2.2 flowscript if that is of any help.
>
> Some sample code:
>
> function getTicket() {
>     var authenticator = cocoon.getComponent("name_of_spring_bean"); //this is how you can get hold of a spring bean
> }
>
> But the main question is .. what are you trying to accomplish. It's not very clear to me yet.  What is the end goal you are trying to accomplish? Maybe you can do it purely in xslt.. just saying.
>
> Robby
>
> -----Original Message-----
> From: Mansour Al Akeel [mailto:mansour.alakeel@gmail.com]
> Sent: Saturday, November 10, 2012 6:38 PM
> To: users
> Subject: accessing a spring bean methods from sitemap
>
> I need to link documents through some identification. For example, assuming that I have:
>
> articles/my-first-article.xml
> articles/second-one.xml
> articles/hello-world-article.xml
>
> books/book1.xml  which has  references to  artice-1 and article-3 identified by an id of the form: A001
>
> I need to create a hashtable linking both so that I pass query param by ID or by name. The idea I have is to initialize spring bean that will extract the data from these files, and construct a Map<String,String>.
>
> My question is how can I access this HashTable from sitemap ??
>
> I am using C2.2.
>
> ---------------------------------------------------------------------
> 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: accessing a spring bean methods from sitemap

Posted by Robby Pelssers <Ro...@nxp.com>.
Hi Mansour,

I do know how to access spring beans from C2.2 flowscript if that is of any help.

Some sample code:

function getTicket() {
    var authenticator = cocoon.getComponent("name_of_spring_bean"); //this is how you can get hold of a spring bean
}

But the main question is .. what are you trying to accomplish. It's not very clear to me yet.  What is the end goal you are trying to accomplish? Maybe you can do it purely in xslt.. just saying.

Robby

-----Original Message-----
From: Mansour Al Akeel [mailto:mansour.alakeel@gmail.com] 
Sent: Saturday, November 10, 2012 6:38 PM
To: users
Subject: accessing a spring bean methods from sitemap

I need to link documents through some identification. For example, assuming that I have:

articles/my-first-article.xml
articles/second-one.xml
articles/hello-world-article.xml

books/book1.xml  which has  references to  artice-1 and article-3 identified by an id of the form: A001

I need to create a hashtable linking both so that I pass query param by ID or by name. The idea I have is to initialize spring bean that will extract the data from these files, and construct a Map<String,String>.

My question is how can I access this HashTable from sitemap ??

I am using C2.2.

---------------------------------------------------------------------
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