Re: [C3] Can i18n transformer use an internal pipeline as bundle?

2014-01-18 Thread Alberto Brosich

I thought about your options.

Solution 1 seems to have the same problem as i18n transformer: use a
pipeline as parameter for transformers. In this case is a parameter of
the xsl transformer.

Solution 2 in my case is not useful because i18n data is added in more
than one place in the pipeline.

I think I will do some changes to use the sql transformer to retrieve
i18n data. After all i18n data is stored in a relational database.

Regards

Alberto


On Fri, 2014-01-17 at 20:15 +0100, gelo1234 wrote:
 OK, 100 xslt params would be too complicated as xslt params.
 
 
 I have 2 more options though :)
 
 
 1. Option with pure xml/xsl
 
 
 How about making properties a raw xml data (with xml serializer, not
 txt), e.g.
 
 
 properties
 
   key1value1/key1
 
   key2value2/key2
   ...
 
   keyNvalueN/keyN
 
 /properties
 
 
 and in subsequent XSLT use:
 
 
 xsl:variable name=properties select=/Root/properties/
 
 
 and each parameter inserted with xsl:value-of
 select=$properties/keyX/ ?
 
 
 With this approach, it is a matter of rewriting your XSL that
 generates HTML.
 
 
 
 2. Option with RESTController
 
 
 Use generator to get properties out from database and put it inside
 
 a Map, then call string-template to render XML/HTML with values
 from Map:
 
 map:match pattern=homepage
 map:generate src=homepage.xhtml type=stringtemplate /
 map:serialize type=html /
 /map:match
 
 
 map:match pattern=homepage.html
 controller:call controller=rest-controller 
 select=HomepageController
   map:parameter name=lang value={jexl:cocoon.request.lang} /
 /controller:call
 /map:match
 
 
 @RESTController
 public class HomepageController implements Get {
 
 @SitemapParameter
 private String lang;
 
 @RequestParameter
 private String someParam;
 
 public RestResponse doGet() throws Exception {
 
   // get properties out from database
   -- custom jdbc code here
   ResultSet rs = properties_from_db;
 
   // put it inside Map
 
   MapString, Object data = new HashMapString, Object();
 
   while (rs.hasNext()) {
   rs.next();
   data.put(rs.getString(key), rs.getString(value));
 
   }
   return new Page(servlet:/homepage, data);
 }
 }
 
 
 
 
 Greetings,
 Greg
  
 
 
 2014/1/17 Alberto Brosich abros...@ogs.trieste.it
 On Fri, 2014-01-17 at 16:44 +0100, gelo1234 wrote:
  How about a workaround that puts those properties values
 into XSL
  params and transform with standard XSLTransformer not
  i18nTransformer ?
 
 
 mmh, it seems quite complicated. The properties file is more
 than one
 hundred lines long. How can I pass all these properties?
 A choice could be a dynamic xslt, built querying the database.
 But can I
 specify a servlet: protocol in the src attribute of an xsl
 transformer? I think no.
 
 
 
 
  Where do you need those properties in pipeline ?
 
 
 I have a pipeline that produce an html page, querying a
 database.
 
 map:match pattern=homepage
   map:generate src=files/homepage.xml /
   map:transform type=sql
 map:parameter name=use-connection value=dataSource /
   /map:transform
 
   map:transform src=stylesheets/homepage-sql2xml.xsl/
   map:transform type=i18n
 map:parameter name=locale
 value={jexl:cocoon.request.lang} /
 map:parameter name=bundle
 value=COB-INF/files/translations /
   /map:transform
   map:transform src=stylesheets/homepage2html.xsl/
 etc...
 
 
 
 
  Greetings,
  Greg
 
 
 
  2014/1/17 Alberto Brosich abros...@ogs.trieste.it
 
  Yes, it's really simple.
  The source file is an xml file with a sqltransformer
 query.
  The query is simple: just a select to a specific
 table (or
  view) with a where condition.
  Then an xsl transformer convert the xml to txt with
 a pair of
  key and value for every row.
  That's all.
 
  map:pipeline internal-only=true
 
map:match
 pattern=translations_*.properties
  map:generate type=string-template
  src=files/dbdata.xml
  map:parameter name=table
  value=messages/
  map:parameter name=fields
  value=key_value, value/
  map:parameter
 name=condition
  value=lang_id='{map:1}'/
   

[C3] Can i18n transformer use an internal pipeline as bundle?

2014-01-17 Thread Alberto Brosich

Hi,

I'm migrating a 2.1 cocoon application to 3.0, using beta1-SNAPSHOT
because I need the sql transformer.
As I wrote in the subject, I'm need to specify an internal pipeline as
bundle for the i18n transformer, because the properties file has to be
derived from database. Using a plain file it works.
I tried several urls using servlet: protocol, but without success.

I have the following internal pipeline:
map:match pattern=translations_*.properties

and I tried several bundles urls like:
map:parameter name=bundle value=servlet:/translations /
or
map:parameter name=bundle
value=servlet:/translations_{jexl:cocoon.request.lang}.properties /

The exception is:
org.apache.cocoon.pipeline.SetupException:
java.util.MissingResourceException: Can't find bundle for base name
servlet:/translations, locale en

What I doing wrong?

Best regards

Alberto


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



Re: [C3] Can i18n transformer use an internal pipeline as bundle?

2014-01-17 Thread gelo1234
Hello Alberto,

Have you defined

map:match pattern=translations_*.properties

with:
map:generate type=service-consumer/ ?

Otherwise:
map:parameter name=bundle

value=servlet:/translations_{jexl:cocoon.request.lang}.properties /

will not work as expected.

Take a look at C3 samples sitemap.xmap [1] which shows correct definition
of service consumer.

Greetings,
Greg

[1]
http://svn.apache.org/repos/asf/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap


2014/1/17 Alberto Brosich abros...@ogs.trieste.it


 Hi,

 I'm migrating a 2.1 cocoon application to 3.0, using beta1-SNAPSHOT
 because I need the sql transformer.
 As I wrote in the subject, I'm need to specify an internal pipeline as
 bundle for the i18n transformer, because the properties file has to be
 derived from database. Using a plain file it works.
 I tried several urls using servlet: protocol, but without success.

 I have the following internal pipeline:
 map:match pattern=translations_*.properties

 and I tried several bundles urls like:
 map:parameter name=bundle value=servlet:/translations /
 or
 map:parameter name=bundle
 value=servlet:/translations_{jexl:cocoon.request.lang}.properties /

 The exception is:
 org.apache.cocoon.pipeline.SetupException:
 java.util.MissingResourceException: Can't find bundle for base name
 servlet:/translations, locale en

 What I doing wrong?

 Best regards

 Alberto


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




Re: [C3] Can i18n transformer use an internal pipeline as bundle?

2014-01-17 Thread gelo1234
Hello Alberto,

One more thing is that any map:transform or map:serialize must have:
type=servlet-service with servlet:/ protocol.

Greetings,
Greg


2014/1/17 gelo1234 gelo1...@gmail.com

 Hello Alberto,

 Have you defined

 map:match pattern=translations_*.properties

 with:
 map:generate type=service-consumer/ ?

 Otherwise:

 map:parameter name=bundle

 value=servlet:/translations_{jexl:cocoon.request.lang}.properties /

 will not work as expected.

 Take a look at C3 samples sitemap.xmap [1] which shows correct definition
 of service consumer.

 Greetings,
 Greg

 [1]
 http://svn.apache.org/repos/asf/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap


 2014/1/17 Alberto Brosich abros...@ogs.trieste.it


 Hi,

 I'm migrating a 2.1 cocoon application to 3.0, using beta1-SNAPSHOT
 because I need the sql transformer.
 As I wrote in the subject, I'm need to specify an internal pipeline as
 bundle for the i18n transformer, because the properties file has to be
 derived from database. Using a plain file it works.
 I tried several urls using servlet: protocol, but without success.

 I have the following internal pipeline:
 map:match pattern=translations_*.properties

 and I tried several bundles urls like:
 map:parameter name=bundle value=servlet:/translations /
 or
 map:parameter name=bundle
 value=servlet:/translations_{jexl:cocoon.request.lang}.properties /

 The exception is:
 org.apache.cocoon.pipeline.SetupException:
 java.util.MissingResourceException: Can't find bundle for base name
 servlet:/translations, locale en

 What I doing wrong?

 Best regards

 Alberto


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





Re: [C3] Can i18n transformer use an internal pipeline as bundle?

2014-01-17 Thread Alberto Brosich

Hi Greg,

I already took a look to the sample sitemap and I found the following
example:

 map:match pattern=internal-only/simple-xml
map:generate src=sax-pipeline/simple.xml /
map:transform src=sax-pipeline/simple.xslt
  map:parameter name=myParam
value=3-{jexl:cocoon.request.ssf} /
/map:transform
map:serialize type=xml /
  /map:match

  map:match pattern=ssf/local-internal-only
map:generate src=servlet:/internal-only/simple-xml /
map:serialize type=xml /
  /map:match

Second match uses servlet: protocol. The internal-only/simple-xml
match is used as source of data.
So I supposed it is something similar to my needs. i18n bundle parameter
needs a source of data, usually a file (better, a group of file, as
java.util.ResourceBundle is). In this case no service-consumer or
servlet-service are used.

Reading the sample sitemap I understood that service-consumer and
servlet-service are used when you want to use a match as transformer
or serializer.

I understood wrong?

Regards

Alberto



On Fri, 2014-01-17 at 11:32 +0100, gelo1234 wrote:
 Hello Alberto,
 
 
 One more thing is that any map:transform or map:serialize must have:
 type=servlet-service with servlet:/ protocol.
 
 
 
 Greetings,
 Greg
 
 
 
 2014/1/17 gelo1234 gelo1...@gmail.com
 Hello Alberto,
 
 
 Have you defined 
 
 map:match pattern=translations_*.properties
 
 
 with:
 map:generate type=service-consumer/ ?
 
 
 Otherwise:
 
 map:parameter name=bundle 
 
 value=servlet:/translations_{jexl:cocoon.request.lang}.properties /
 
 
 will not work as expected.
 
 
 Take a look at C3 samples sitemap.xmap [1] which shows correct
 definition of service consumer.
 
 
 Greetings,
 Greg
 
 [1]
 
 http://svn.apache.org/repos/asf/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap
 
 
 
 2014/1/17 Alberto Brosich abros...@ogs.trieste.it
 
 Hi,
 
 I'm migrating a 2.1 cocoon application to 3.0, using
 beta1-SNAPSHOT
 because I need the sql transformer.
 As I wrote in the subject, I'm need to specify an
 internal pipeline as
 bundle for the i18n transformer, because the
 properties file has to be
 derived from database. Using a plain file it works.
 I tried several urls using servlet: protocol, but
 without success.
 
 I have the following internal pipeline:
 map:match pattern=translations_*.properties
 
 and I tried several bundles urls like:
 map:parameter name=bundle
 value=servlet:/translations /
 or
 map:parameter name=bundle
 
 value=servlet:/translations_{jexl:cocoon.request.lang}.properties /
 
 The exception is:
 org.apache.cocoon.pipeline.SetupException:
 java.util.MissingResourceException: Can't find bundle
 for base name
 servlet:/translations, locale en
 
 What I doing wrong?
 
 Best regards
 
 Alberto
 
 
 
 -
 To unsubscribe, e-mail:
 users-unsubscr...@cocoon.apache.org
 For additional commands, e-mail:
 users-h...@cocoon.apache.org
 
 
 
 
 



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



Re: [C3] Can i18n transformer use an internal pipeline as bundle?

2014-01-17 Thread gelo1234
Hi Alberto,

Yes, servlet-service is used if acting as a transformer or a serializer. If
you use generator, there is no need to specify servlet-service.

I used servlet:/ protocol in many generator cases and from within
XIncludeTransformer (x:xinclude) but not as a map:parameter so far.

Greetings,
Greg


2014/1/17 Alberto Brosich abros...@ogs.trieste.it


 Hi Greg,

 I already took a look to the sample sitemap and I found the following
 example:

  map:match pattern=internal-only/simple-xml
 map:generate src=sax-pipeline/simple.xml /
 map:transform src=sax-pipeline/simple.xslt
   map:parameter name=myParam
 value=3-{jexl:cocoon.request.ssf} /
 /map:transform
 map:serialize type=xml /
   /map:match

   map:match pattern=ssf/local-internal-only
 map:generate src=servlet:/internal-only/simple-xml /
 map:serialize type=xml /
   /map:match

 Second match uses servlet: protocol. The internal-only/simple-xml
 match is used as source of data.
 So I supposed it is something similar to my needs. i18n bundle parameter
 needs a source of data, usually a file (better, a group of file, as
 java.util.ResourceBundle is). In this case no service-consumer or
 servlet-service are used.

 Reading the sample sitemap I understood that service-consumer and
 servlet-service are used when you want to use a match as transformer
 or serializer.

 I understood wrong?

 Regards

 Alberto



 On Fri, 2014-01-17 at 11:32 +0100, gelo1234 wrote:
  Hello Alberto,
 
 
  One more thing is that any map:transform or map:serialize must have:
  type=servlet-service with servlet:/ protocol.
 
 
 
  Greetings,
  Greg
 
 
 
  2014/1/17 gelo1234 gelo1...@gmail.com
  Hello Alberto,
 
 
  Have you defined
 
  map:match pattern=translations_*.properties
 
 
  with:
  map:generate type=service-consumer/ ?
 
 
  Otherwise:
 
  map:parameter name=bundle
 
 
 value=servlet:/translations_{jexl:cocoon.request.lang}.properties /
 
 
  will not work as expected.
 
 
  Take a look at C3 samples sitemap.xmap [1] which shows correct
  definition of service consumer.
 
 
  Greetings,
  Greg
 
  [1]
 
 http://svn.apache.org/repos/asf/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap
 
 
 
  2014/1/17 Alberto Brosich abros...@ogs.trieste.it
 
  Hi,
 
  I'm migrating a 2.1 cocoon application to 3.0, using
  beta1-SNAPSHOT
  because I need the sql transformer.
  As I wrote in the subject, I'm need to specify an
  internal pipeline as
  bundle for the i18n transformer, because the
  properties file has to be
  derived from database. Using a plain file it works.
  I tried several urls using servlet: protocol, but
  without success.
 
  I have the following internal pipeline:
  map:match pattern=translations_*.properties
 
  and I tried several bundles urls like:
  map:parameter name=bundle
  value=servlet:/translations /
  or
  map:parameter name=bundle
 
 value=servlet:/translations_{jexl:cocoon.request.lang}.properties /
 
  The exception is:
  org.apache.cocoon.pipeline.SetupException:
  java.util.MissingResourceException: Can't find bundle
  for base name
  servlet:/translations, locale en
 
  What I doing wrong?
 
  Best regards
 
  Alberto
 
 
 
 -
  To unsubscribe, e-mail:
  users-unsubscr...@cocoon.apache.org
  For additional commands, e-mail:
  users-h...@cocoon.apache.org
 
 
 
 
 



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




Re: [C3] Can i18n transformer use an internal pipeline as bundle?

2014-01-17 Thread Alberto Brosich

Looking deepest in the apidocs I gather that's no way to use a pipeline
as bundle for i18n transformer in cocoon 3.
In fact it uses a ResourceBundle object that needs physical files.

In 2.1 version there is org.apache.cocoon.environment.SourceResolver in
the setup() method. I suppose it is able to deal with cocoon:
protocol.

I'm a little bit disappointed about that. One of the best thing of
cocoon is its dynamic nature.

Is there any workaround? Or can any cocoon developer give some suggest
to help me to write a patch?

Best regards

Alberto


On Fri, 2014-01-17 at 13:40 +0100, gelo1234 wrote:
 Hi Alberto,
 
 
 Yes, servlet-service is used if acting as a transformer or a
 serializer. If you use generator, there is no need to specify
 servlet-service.
 
 
 I used servlet:/ protocol in many generator cases and from within
 XIncludeTransformer (x:xinclude) but not as a map:parameter so far.
 
 
 
 Greetings,
 Greg
 
 
 
 2014/1/17 Alberto Brosich abros...@ogs.trieste.it
 
 Hi Greg,
 
 I already took a look to the sample sitemap and I found the
 following
 example:
 
  map:match pattern=internal-only/simple-xml
 map:generate src=sax-pipeline/simple.xml /
 map:transform src=sax-pipeline/simple.xslt
   map:parameter name=myParam
 value=3-{jexl:cocoon.request.ssf} /
 /map:transform
 map:serialize type=xml /
   /map:match
 
   map:match pattern=ssf/local-internal-only
 map:generate
 src=servlet:/internal-only/simple-xml /
 map:serialize type=xml /
   /map:match
 
 Second match uses servlet: protocol. The
 internal-only/simple-xml
 match is used as source of data.
 So I supposed it is something similar to my needs. i18n bundle
 parameter
 needs a source of data, usually a file (better, a group of
 file, as
 java.util.ResourceBundle is). In this case no
 service-consumer or
 servlet-service are used.
 
 Reading the sample sitemap I understood that
 service-consumer and
 servlet-service are used when you want to use a match as
 transformer
 or serializer.
 
 I understood wrong?
 
 Regards
 
 Alberto
 
 
 
 On Fri, 2014-01-17 at 11:32 +0100, gelo1234 wrote:
  Hello Alberto,
 
 
  One more thing is that any map:transform or map:serialize
 must have:
  type=servlet-service with servlet:/ protocol.
 
 
 
  Greetings,
  Greg
 
 
 
  2014/1/17 gelo1234 gelo1...@gmail.com
  Hello Alberto,
 
 
  Have you defined
 
  map:match pattern=translations_*.properties
 
 
  with:
  map:generate type=service-consumer/ ?
 
 
  Otherwise:
 
  map:parameter name=bundle
 
 
 value=servlet:/translations_{jexl:cocoon.request.lang}.properties /
 
 
  will not work as expected.
 
 
  Take a look at C3 samples sitemap.xmap [1] which
 shows correct
  definition of service consumer.
 
 
  Greetings,
  Greg
 
  [1]
 
 
 http://svn.apache.org/repos/asf/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap
 
 
 
  2014/1/17 Alberto Brosich abros...@ogs.trieste.it
 
  Hi,
 
  I'm migrating a 2.1 cocoon application to
 3.0, using
  beta1-SNAPSHOT
  because I need the sql transformer.
  As I wrote in the subject, I'm need to
 specify an
  internal pipeline as
  bundle for the i18n transformer, because the
  properties file has to be
  derived from database. Using a plain file it
 works.
  I tried several urls using servlet:
 protocol, but
  without success.
 
  I have the following internal pipeline:
  map:match
 pattern=translations_*.properties
 
  and I tried several bundles urls like:
  map:parameter name=bundle
  value=servlet:/translations /
  or
  

Re: [C3] Can i18n transformer use an internal pipeline as bundle?

2014-01-17 Thread gelo1234
Can you show here your full original Cocoon pipeline ? Do you store
property files content or property filenames inside db ?

Greetings,
Greg


2014/1/17 Alberto Brosich abros...@ogs.trieste.it


 Hi,

 I'm migrating a 2.1 cocoon application to 3.0, using beta1-SNAPSHOT
 because I need the sql transformer.
 As I wrote in the subject, I'm need to specify an internal pipeline as
 bundle for the i18n transformer, because the properties file has to be
 derived from database. Using a plain file it works.
 I tried several urls using servlet: protocol, but without success.

 I have the following internal pipeline:
 map:match pattern=translations_*.properties

 and I tried several bundles urls like:
 map:parameter name=bundle value=servlet:/translations /
 or
 map:parameter name=bundle
 value=servlet:/translations_{jexl:cocoon.request.lang}.properties /

 The exception is:
 org.apache.cocoon.pipeline.SetupException:
 java.util.MissingResourceException: Can't find bundle for base name
 servlet:/translations, locale en

 What I doing wrong?

 Best regards

 Alberto


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




Re: [C3] Can i18n transformer use an internal pipeline as bundle?

2014-01-17 Thread Alberto Brosich

Yes, it's really simple.
The source file is an xml file with a sqltransformer query. The query is 
simple: just a select to a specific table (or view) with a where condition.
Then an xsl transformer convert the xml to txt with a pair of key and value for 
every row.
That's all.

map:pipeline internal-only=true

  map:match pattern=translations_*.properties
map:generate type=string-template src=files/dbdata.xml
map:parameter name=table value=messages/
map:parameter name=fields value=key_value, value/
map:parameter name=condition 
value=lang_id='{map:1}'/
map:parameter name=orderfields value=1/
map:parameter name=rowcount value=10/
/map:generate
map:transform type=sql
map:parameter name=use-connection value=dataSource 
/ 
/map:transform
map:transform src=stylesheets/sql2properties.xsl/
map:serialize type=txt/
  /map:match


This is a snip of the xsl stylesheet:

xsl:template match=sql:row
xsl:text
xsl:value-of select=sql:key_value//xsl:text
xsl:text=/xsl:text
xsl:textxsl:value-of select=sql:value//xsl:text
/xsl:template


Alberto


On Fri, 2014-01-17 at 15:30 +0100, gelo1234 wrote:
 Can you show here your full original Cocoon pipeline ? Do you store
 property files content or property filenames inside db ?
 
 
 Greetings,
 Greg
 
 
 
 2014/1/17 Alberto Brosich abros...@ogs.trieste.it
 
 Hi,
 
 I'm migrating a 2.1 cocoon application to 3.0, using
 beta1-SNAPSHOT
 because I need the sql transformer.
 As I wrote in the subject, I'm need to specify an internal
 pipeline as
 bundle for the i18n transformer, because the properties file
 has to be
 derived from database. Using a plain file it works.
 I tried several urls using servlet: protocol, but without
 success.
 
 I have the following internal pipeline:
 map:match pattern=translations_*.properties
 
 and I tried several bundles urls like:
 map:parameter name=bundle value=servlet:/translations /
 or
 map:parameter name=bundle
 value=servlet:/translations_{jexl:cocoon.request.lang}.properties /
 
 The exception is:
 org.apache.cocoon.pipeline.SetupException:
 java.util.MissingResourceException: Can't find bundle for base
 name
 servlet:/translations, locale en
 
 What I doing wrong?
 
 Best regards
 
 Alberto
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@cocoon.apache.org
 For additional commands, e-mail: users-h...@cocoon.apache.org
 
 
 



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



Re: [C3] Can i18n transformer use an internal pipeline as bundle?

2014-01-17 Thread gelo1234
How about a workaround that puts those properties values into XSL params
and transform with standard XSLTransformer not i18nTransformer ?

Where do you need those properties in pipeline ?

Greetings,
Greg


2014/1/17 Alberto Brosich abros...@ogs.trieste.it


 Yes, it's really simple.
 The source file is an xml file with a sqltransformer query. The query is
 simple: just a select to a specific table (or view) with a where condition.
 Then an xsl transformer convert the xml to txt with a pair of key and
 value for every row.
 That's all.

 map:pipeline internal-only=true

   map:match pattern=translations_*.properties
 map:generate type=string-template
 src=files/dbdata.xml
 map:parameter name=table value=messages/
 map:parameter name=fields value=key_value,
 value/
 map:parameter name=condition
 value=lang_id='{map:1}'/
 map:parameter name=orderfields value=1/
 map:parameter name=rowcount value=10/
 /map:generate
 map:transform type=sql
 map:parameter name=use-connection
 value=dataSource /
 /map:transform
 map:transform src=stylesheets/sql2properties.xsl/
 map:serialize type=txt/
   /map:match


 This is a snip of the xsl stylesheet:

 xsl:template match=sql:row
 xsl:text
 xsl:value-of select=sql:key_value//xsl:text
 xsl:text=/xsl:text
 xsl:textxsl:value-of select=sql:value//xsl:text
 /xsl:template


 Alberto


 On Fri, 2014-01-17 at 15:30 +0100, gelo1234 wrote:
  Can you show here your full original Cocoon pipeline ? Do you store
  property files content or property filenames inside db ?
 
 
  Greetings,
  Greg
 
 
 
  2014/1/17 Alberto Brosich abros...@ogs.trieste.it
 
  Hi,
 
  I'm migrating a 2.1 cocoon application to 3.0, using
  beta1-SNAPSHOT
  because I need the sql transformer.
  As I wrote in the subject, I'm need to specify an internal
  pipeline as
  bundle for the i18n transformer, because the properties file
  has to be
  derived from database. Using a plain file it works.
  I tried several urls using servlet: protocol, but without
  success.
 
  I have the following internal pipeline:
  map:match pattern=translations_*.properties
 
  and I tried several bundles urls like:
  map:parameter name=bundle value=servlet:/translations /
  or
  map:parameter name=bundle
 
 value=servlet:/translations_{jexl:cocoon.request.lang}.properties /
 
  The exception is:
  org.apache.cocoon.pipeline.SetupException:
  java.util.MissingResourceException: Can't find bundle for base
  name
  servlet:/translations, locale en
 
  What I doing wrong?
 
  Best regards
 
  Alberto
 
 
 
 -
  To unsubscribe, e-mail: users-unsubscr...@cocoon.apache.org
  For additional commands, e-mail: users-h...@cocoon.apache.org
 
 
 



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




Re: [C3] Can i18n transformer use an internal pipeline as bundle?

2014-01-17 Thread Alberto Brosich
On Fri, 2014-01-17 at 16:44 +0100, gelo1234 wrote:
 How about a workaround that puts those properties values into XSL
 params and transform with standard XSLTransformer not
 i18nTransformer ?

mmh, it seems quite complicated. The properties file is more than one
hundred lines long. How can I pass all these properties?
A choice could be a dynamic xslt, built querying the database. But can I
specify a servlet: protocol in the src attribute of an xsl
transformer? I think no.


 
 
 Where do you need those properties in pipeline ?

I have a pipeline that produce an html page, querying a database.

map:match pattern=homepage
  map:generate src=files/homepage.xml /
  map:transform type=sql
map:parameter name=use-connection value=dataSource / 
  /map:transform
  map:transform src=stylesheets/homepage-sql2xml.xsl/
  map:transform type=i18n
map:parameter name=locale value={jexl:cocoon.request.lang} /
map:parameter name=bundle value=COB-INF/files/translations /
  /map:transform
  map:transform src=stylesheets/homepage2html.xsl/
etc...

 
 
 
 Greetings,
 Greg
 
 
 
 2014/1/17 Alberto Brosich abros...@ogs.trieste.it
 
 Yes, it's really simple.
 The source file is an xml file with a sqltransformer query.
 The query is simple: just a select to a specific table (or
 view) with a where condition.
 Then an xsl transformer convert the xml to txt with a pair of
 key and value for every row.
 That's all.
 
 map:pipeline internal-only=true
 
   map:match pattern=translations_*.properties
 map:generate type=string-template
 src=files/dbdata.xml
 map:parameter name=table
 value=messages/
 map:parameter name=fields
 value=key_value, value/
 map:parameter name=condition
 value=lang_id='{map:1}'/
 map:parameter name=orderfields
 value=1/
 map:parameter name=rowcount
 value=10/
 /map:generate
 map:transform type=sql
 map:parameter name=use-connection
 value=dataSource /
 /map:transform
 map:transform src=stylesheets/sql2properties.xsl/
 map:serialize type=txt/
   /map:match
 
 
 This is a snip of the xsl stylesheet:
 
 xsl:template match=sql:row
 xsl:text
 xsl:value-of select=sql:key_value//xsl:text
 xsl:text=/xsl:text
 xsl:textxsl:value-of
 select=sql:value//xsl:text
 /xsl:template
 
 
 Alberto
 
 
 On Fri, 2014-01-17 at 15:30 +0100, gelo1234 wrote:
  Can you show here your full original Cocoon pipeline ? Do
 you store
  property files content or property filenames inside db ?
 
 
  Greetings,
  Greg
 
 
 
  2014/1/17 Alberto Brosich abros...@ogs.trieste.it
 
  Hi,
 
  I'm migrating a 2.1 cocoon application to 3.0, using
  beta1-SNAPSHOT
  because I need the sql transformer.
  As I wrote in the subject, I'm need to specify an
 internal
  pipeline as
  bundle for the i18n transformer, because the
 properties file
  has to be
  derived from database. Using a plain file it works.
  I tried several urls using servlet: protocol, but
 without
  success.
 
  I have the following internal pipeline:
  map:match pattern=translations_*.properties
 
  and I tried several bundles urls like:
  map:parameter name=bundle
 value=servlet:/translations /
  or
  map:parameter name=bundle
 
 value=servlet:/translations_{jexl:cocoon.request.lang}.properties /
 
  The exception is:
  org.apache.cocoon.pipeline.SetupException:
  java.util.MissingResourceException: Can't find
 bundle for base
  name
  servlet:/translations, locale en
 
  What I doing wrong?
 
  Best regards
 
  Alberto
 
 
 
 -
  To unsubscribe, e-mail:
 users-unsubscr...@cocoon.apache.org
  For additional commands, e-mail:
 users-h...@cocoon.apache.org
 
 
 
 

Re: [C3] Can i18n transformer use an internal pipeline as bundle?

2014-01-17 Thread gelo1234
OK, 100 xslt params would be too complicated as xslt params.

I have 2 more options though :)

1. Option with pure xml/xsl

How about making properties a raw xml data (with xml serializer, not txt),
e.g.

properties
  key1value1/key1
  key2value2/key2
  ...
  keyNvalueN/keyN
/properties

and in subsequent XSLT use:

xsl:variable name=properties select=/Root/properties/

and each parameter inserted with xsl:value-of select=$properties/keyX/ ?

With this approach, it is a matter of rewriting your XSL that generates
HTML.

2. Option with RESTController

Use generator to get properties out from database and put it inside
a Map, then call string-template to render XML/HTML with values
from Map:

map:match pattern=homepage
map:generate src=homepage.xhtml type=stringtemplate /
map:serialize type=html //map:match


map:match pattern=homepage.html
controller:call controller=rest-controller
select=HomepageController
  map:parameter name=lang value={jexl:cocoon.request.lang} /
/controller:call/map:match


@RESTControllerpublic class HomepageController implements Get {

@SitemapParameter
private String lang;

@RequestParameter
private String someParam;

public RestResponse doGet() throws Exception {

  // get properties out from database

  -- custom jdbc code here

  ResultSet rs = properties_from_db;

  // put it inside Map

  MapString, Object data = new HashMapString, Object();

  while (rs.hasNext()) {

  rs.next();

  data.put(rs.getString(key), rs.getString(value));

  }
  return new Page(servlet:/homepage, data);
}}



Greetings,
Greg



2014/1/17 Alberto Brosich abros...@ogs.trieste.it

 On Fri, 2014-01-17 at 16:44 +0100, gelo1234 wrote:
  How about a workaround that puts those properties values into XSL
  params and transform with standard XSLTransformer not
  i18nTransformer ?

 mmh, it seems quite complicated. The properties file is more than one
 hundred lines long. How can I pass all these properties?
 A choice could be a dynamic xslt, built querying the database. But can I
 specify a servlet: protocol in the src attribute of an xsl
 transformer? I think no.


 
 
  Where do you need those properties in pipeline ?

 I have a pipeline that produce an html page, querying a database.

 map:match pattern=homepage
   map:generate src=files/homepage.xml /
   map:transform type=sql
 map:parameter name=use-connection value=dataSource /
   /map:transform
   map:transform src=stylesheets/homepage-sql2xml.xsl/
   map:transform type=i18n
 map:parameter name=locale value={jexl:cocoon.request.lang} /
 map:parameter name=bundle value=COB-INF/files/translations /
   /map:transform
   map:transform src=stylesheets/homepage2html.xsl/
 etc...

 
 
 
  Greetings,
  Greg
 
 
 
  2014/1/17 Alberto Brosich abros...@ogs.trieste.it
 
  Yes, it's really simple.
  The source file is an xml file with a sqltransformer query.
  The query is simple: just a select to a specific table (or
  view) with a where condition.
  Then an xsl transformer convert the xml to txt with a pair of
  key and value for every row.
  That's all.
 
  map:pipeline internal-only=true
 
map:match pattern=translations_*.properties
  map:generate type=string-template
  src=files/dbdata.xml
  map:parameter name=table
  value=messages/
  map:parameter name=fields
  value=key_value, value/
  map:parameter name=condition
  value=lang_id='{map:1}'/
  map:parameter name=orderfields
  value=1/
  map:parameter name=rowcount
  value=10/
  /map:generate
  map:transform type=sql
  map:parameter name=use-connection
  value=dataSource /
  /map:transform
  map:transform src=stylesheets/sql2properties.xsl/
  map:serialize type=txt/
/map:match
 
 
  This is a snip of the xsl stylesheet:
 
  xsl:template match=sql:row
  xsl:text
  xsl:value-of select=sql:key_value//xsl:text
  xsl:text=/xsl:text
  xsl:textxsl:value-of
  select=sql:value//xsl:text
  /xsl:template
 
 
  Alberto
 
 
  On Fri, 2014-01-17 at 15:30 +0100, gelo1234 wrote:
   Can you show here your full original Cocoon pipeline ? Do
  you store
   property files content or property filenames inside db ?
  
  
   Greetings,
   Greg
  
  
  
   2014/1/17 Alberto Brosich abros...@ogs.trieste.it