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