You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by ch...@apache.org on 2006/02/09 22:56:06 UTC

svn commit: r376448 - in /lenya/trunk/src: java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java webapp/lenya/module-resources.xmap webapp/lenya/xslt/resources/external-relax.xsl

Author: chestnut
Date: Thu Feb  9 13:56:04 2006
New Revision: 376448

URL: http://svn.apache.org/viewcvs?rev=376448&view=rev
Log:
removal of fallback:// from external relaxng schemas, 
while still utilizing fallback functionality by specifying 
the publication the schema is being used in

Added:
    lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl   (with props)
Modified:
    lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
    lenya/trunk/src/webapp/lenya/module-resources.xmap

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java?rev=376448&r1=376447&r2=376448&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java Thu Feb  9 13:56:04 2006
@@ -27,6 +27,7 @@
 import org.apache.cocoon.components.modules.input.AbstractInputModule;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
+import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentIdentityMap;
 import org.apache.lenya.cms.publication.ResourceType;
@@ -57,6 +58,7 @@
             Session session = RepositoryUtil.getSession(request, getLogger());
 
             ResourceType resourceType;
+            Publication pub = null;
             String attribute;
 
             String[] steps = name.split(":");
@@ -68,6 +70,7 @@
                 String webappUrl = ServletHelper.getWebappURI(request);
                 Document document = docFactory.getFromURL(webappUrl);
                 resourceType = document.getResourceType();
+                pub = document.getPublication();
             } else {
                 attribute = steps[1];
                 String resourceTypeName = steps[0];
@@ -89,8 +92,8 @@
                 value = resourceType.getSchema().getURI();
             } else if (attribute.equals(HTTP_SCHEMA_URI)) {
                 String uri = resourceType.getSchema().getURI();
-                String path = uri.substring("fallback://".length());
-                value = request.getContextPath() + "/fallback/" + path;
+                String path = uri.substring(uri.indexOf("/schemas"));
+                value = request.getContextPath() + "/" + pub.getId() + "/modules/" + resourceType.getName() + path;
             } else {
                 throw new ConfigurationException("Attribute [" + name + "] not supported!");
             }

Modified: lenya/trunk/src/webapp/lenya/module-resources.xmap
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/module-resources.xmap?rev=376448&r1=376447&r2=376448&view=diff
==============================================================================
--- lenya/trunk/src/webapp/lenya/module-resources.xmap (original)
+++ lenya/trunk/src/webapp/lenya/module-resources.xmap Thu Feb  9 13:56:04 2006
@@ -20,6 +20,13 @@
 <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
 
   <map:pipelines>
+    <map:pipeline internal-only="true">
+      <map:match pattern="*/**.*">
+        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
+          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
+        </map:match> 
+      </map:match>
+    </map:pipeline>
     <map:pipeline>
       
       <!-- matches modules/*/**.css -->
@@ -49,9 +56,13 @@
         <map:match type="regexp" pattern="(.*\.)(xml)$"> 
           <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="text/xml"/>
         </map:match>        
-        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
-        </map:match> 
+        <map:match type="regexp" pattern="(.*\.)(rng)$">
+          <map:generate src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}"/>
+          <map:transform src="fallback://lenya/xslt/resources/external-relax.xsl">
+            <map:parameter name="publicationid" value="{page-envelope:publication-id}"/>
+          </map:transform>
+          <map:serialize type="xml"/>
+        </map:match>
         <map:match type="regexp" pattern="(.*\.)(jpg|JPG|Jpg|jpeg|Jpeg|JPEG)$"> 
           <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="image/jpeg" />
         </map:match> 

Added: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl?rev=376448&view=auto
==============================================================================
--- lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl (added)
+++ lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl Thu Feb  9 13:56:04 2006
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<xsl:stylesheet version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    >
+
+  <xsl:param name="publicationid" />
+  
+
+  <xsl:template match="@href[starts-with(.,'fallback')]">
+    <xsl:variable name="nofallback" select="substring-after(.,'fallback://lenya/modules/')"/>
+    <xsl:variable name="restype" select="substring-before($nofallback,'/resources')"/>
+    <xsl:variable name="resource" select="substring-after($nofallback,'resources/')"/>
+    <xsl:attribute name="href">
+      <xsl:value-of select="concat('/' , $publicationid, '/modules/' , $restype, '/', $resource)"/>
+    </xsl:attribute>
+  </xsl:template>
+  
+  <xsl:template match="@*|node()">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|node()"/>
+    </xsl:copy>
+  </xsl:template>
+  
+</xsl:stylesheet> 

Propchange: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org


Re: svn commit: r376448 - in /lenya/trunk/src: java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java webapp/lenya/module-resources.xmap webapp/lenya/xslt/resources/external-relax.xsl

Posted by Josias Thoeny <jo...@wyona.com>.
On Mon, 2006-02-13 at 15:50 +0100, Andreas Hartmann wrote:
> Josias Thoeny wrote:
> 
> [...]
> 
> > Or would the following solution be better: 
> > If a requested RNG (or XSL) file contains an include using the
> > fallback:// protocol, resolve the URI and replace it by the actual URL
> > before sending the file to the client, instead of letting the client
> > request /fallback uris?
> 
> What would the "actual" URL look like? Fallback URLs are usually
> resolved to internal URLs, which can't be accessed by the client.
> By using /fallback URLs, we avoid the need for mapping fallback://
> URLs HTTP-accessible URLs.

Right, I agree we have to do it the "/fallback"-URL way.

> 
> 
> > BTW, what is the "/lenya" for in fallback://lenya/something ?
> > Is it really necessary?
> 
> It's used to separate core resources from publication resources:
> 
> fallback://lenya/xslt/ -> core XSLTs
> fallback://xslt        -> publication XSLTs

Ah, the second one is used for publication templating, right? Silly
me...

> 
> Maybe we should change the deployment directory structure:
> 
>    /webapp
>      /core
>      /modules
>      /pubs
> 
> and use e.g.
> 
>    fallback://core/xslt/...
> Actually IMO this should be obsolete someday because the "core" should
> be just a set of modules.

It looks good, but as you say it may become obsolete one day, and it
probably would mean a lot of work.

Thanks for your comments/explanations.

Josias

> 
> 
> -- Andreas
> 
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: svn commit: r376448 - in /lenya/trunk/src: java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java webapp/lenya/module-resources.xmap webapp/lenya/xslt/resources/external-relax.xsl

Posted by Andreas Hartmann <an...@wyona.org>.
Josias Thoeny wrote:

[...]

> Or would the following solution be better: 
> If a requested RNG (or XSL) file contains an include using the
> fallback:// protocol, resolve the URI and replace it by the actual URL
> before sending the file to the client, instead of letting the client
> request /fallback uris?

What would the "actual" URL look like? Fallback URLs are usually
resolved to internal URLs, which can't be accessed by the client.
By using /fallback URLs, we avoid the need for mapping fallback://
URLs HTTP-accessible URLs.


> BTW, what is the "/lenya" for in fallback://lenya/something ?
> Is it really necessary?

It's used to separate core resources from publication resources:

fallback://lenya/xslt/ -> core XSLTs
fallback://xslt        -> publication XSLTs

Maybe we should change the deployment directory structure:

   /webapp
     /core
     /modules
     /pubs

and use e.g.

   fallback://core/xslt/...

Actually IMO this should be obsolete someday because the "core" should
be just a set of modules.

-- Andreas



-- 
Andreas Hartmann
Wyona Inc.  -   Open Source Content Management   -   Apache Lenya
http://www.wyona.com                      http://lenya.apache.org
andreas.hartmann@wyona.com                     andreas@apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: svn commit: r376448 - in /lenya/trunk/src: java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java webapp/lenya/module-resources.xmap webapp/lenya/xslt/resources/external-relax.xsl

Posted by Josias Thoeny <jo...@wyona.com>.
On Mon, 2006-02-13 at 13:17 -0500, Doug Chestnut wrote:

[...]

>  
> Requests for resources already use fallback:// (or should).
> Examples:
> fallback//lenya/resources/schemas/lenya.rng
> ->
> /context-prefix/pubid/lenya/schemas/lenya.rng
> 
> *since fallback should be enabled for all resource requests, it isn't 
> needed in the url
> *since we only want to allow access to resources, it can be dropped as well
> *core resources like /context-prefix/lenya/css/menu.css should be ->
> /context-prefix/pubid/lenya/css/menu.css so publications can define 
> their own look and feel
> *don't think this works now, but should?
> 
> fallback://lenya/modules/xhtml/resources/schemas/xhtml/xhtml-basic.rng
> ->
> /context-prefix/pubid/modules/xhtml/schemas/xhtml-basic.rng
> *access to module resources is the function of module-resources.xmap
> *fallback is (or should be) supported in sitemap
> 
> fallback://resources/shared/javascript/foo.js
> ->
> /context-prefix/pubid/area/javascript/foo.js
> *access to pub shared resources is the function of resources-shared.xmap
> *fallback is (or should be) supported in sitemap
> 
> I just don't think that we need to specify "fallback" for requests for 
> resources.  I can't think of an instance when fallback wouldn't be desired.
> 
> WDYT?

Yes, I agree now.
I didn't quite realize that we only have to serve resources, therefore
we don't have to translate arbitrary fallback uris.
I makes sense now, thanks for the clarification.

Josias


> 
> --Doug
> 
> > 
> > Or would the following solution be better: 
> > If a requested RNG (or XSL) file contains an include using the
> > fallback:// protocol, resolve the URI and replace it by the actual URL
> > before sending the file to the client, instead of letting the client
> > request /fallback uris?
> Perhaps this is what I am saying
> > 
> > Any opinions?
> > 
> > BTW, what is the "/lenya" for in fallback://lenya/something ?
> > Is it really necessary?
> > 
> > Josias
> > 
> > 
> >>WDOT?
> >>
> >>And another thing: The context prefix should be prepended to the url, as
> >>it was done in translate-rng-includes.xsl.
> >>Otherwise it won't work in tomcat, when Lenya is deployed in /lenya.
> >>
> >>Josias
> >>
> >>
> >>>Thanks for keeping watch,
> >>>--Doug
> >>>
> >>>>Josias
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>>Added:
> >>>>>   lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl   (with props)
> >>>>>Modified:
> >>>>>   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
> >>>>>   lenya/trunk/src/webapp/lenya/module-resources.xmap
> >>>>>
> >>>>>Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
> >>>>>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java?rev=376448&r1=376447&r2=376448&view=diff
> >>>>>==============================================================================
> >>>>>--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java (original)
> >>>>>+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java Thu Feb  9 13:56:04 2006
> >>>>>@@ -27,6 +27,7 @@
> >>>>>import org.apache.cocoon.components.modules.input.AbstractInputModule;
> >>>>>import org.apache.cocoon.environment.ObjectModelHelper;
> >>>>>import org.apache.cocoon.environment.Request;
> >>>>>+import org.apache.lenya.cms.publication.Publication;
> >>>>>import org.apache.lenya.cms.publication.Document;
> >>>>>import org.apache.lenya.cms.publication.DocumentIdentityMap;
> >>>>>import org.apache.lenya.cms.publication.ResourceType;
> >>>>>@@ -57,6 +58,7 @@
> >>>>>            Session session = RepositoryUtil.getSession(request, getLogger());
> >>>>>
> >>>>>            ResourceType resourceType;
> >>>>>+            Publication pub = null;
> >>>>>            String attribute;
> >>>>>
> >>>>>            String[] steps = name.split(":");
> >>>>>@@ -68,6 +70,7 @@
> >>>>>                String webappUrl = ServletHelper.getWebappURI(request);
> >>>>>                Document document = docFactory.getFromURL(webappUrl);
> >>>>>                resourceType = document.getResourceType();
> >>>>>+                pub = document.getPublication();
> >>>>>            } else {
> >>>>>                attribute = steps[1];
> >>>>>                String resourceTypeName = steps[0];
> >>>>>@@ -89,8 +92,8 @@
> >>>>>                value = resourceType.getSchema().getURI();
> >>>>>            } else if (attribute.equals(HTTP_SCHEMA_URI)) {
> >>>>>                String uri = resourceType.getSchema().getURI();
> >>>>>-                String path = uri.substring("fallback://".length());
> >>>>>-                value = request.getContextPath() + "/fallback/" + path;
> >>>>>+                String path = uri.substring(uri.indexOf("/schemas"));
> >>>>>+                value = request.getContextPath() + "/" + pub.getId() + "/modules/" + resourceType.getName() + path;
> >>>>>            } else {
> >>>>>                throw new ConfigurationException("Attribute [" + name + "] not supported!");
> >>>>>            }
> >>>>>
> >>>>>Modified: lenya/trunk/src/webapp/lenya/module-resources.xmap
> >>>>>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/module-resources.xmap?rev=376448&r1=376447&r2=376448&view=diff
> >>>>>==============================================================================
> >>>>>--- lenya/trunk/src/webapp/lenya/module-resources.xmap (original)
> >>>>>+++ lenya/trunk/src/webapp/lenya/module-resources.xmap Thu Feb  9 13:56:04 2006
> >>>>>@@ -20,6 +20,13 @@
> >>>>><map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
> >>>>>
> >>>>>  <map:pipelines>
> >>>>>+    <map:pipeline internal-only="true">
> >>>>>+      <map:match pattern="*/**.*">
> >>>>>+        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
> >>>>>+          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
> >>>>>+        </map:match> 
> >>>>>+      </map:match>
> >>>>>+    </map:pipeline>
> >>>>>    <map:pipeline>
> >>>>>      
> >>>>>      <!-- matches modules/*/**.css -->
> >>>>>@@ -49,9 +56,13 @@
> >>>>>        <map:match type="regexp" pattern="(.*\.)(xml)$"> 
> >>>>>          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="text/xml"/>
> >>>>>        </map:match>        
> >>>>>-        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
> >>>>>-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
> >>>>>-        </map:match> 
> >>>>>+        <map:match type="regexp" pattern="(.*\.)(rng)$">
> >>>>>+          <map:generate src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}"/>
> >>>>>+          <map:transform src="fallback://lenya/xslt/resources/external-relax.xsl">
> >>>>>+            <map:parameter name="publicationid" value="{page-envelope:publication-id}"/>
> >>>>>+          </map:transform>
> >>>>>+          <map:serialize type="xml"/>
> >>>>>+        </map:match>
> >>>>>        <map:match type="regexp" pattern="(.*\.)(jpg|JPG|Jpg|jpeg|Jpeg|JPEG)$"> 
> >>>>>          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="image/jpeg" />
> >>>>>        </map:match> 
> >>>>>
> >>>>>Added: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
> >>>>>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl?rev=376448&view=auto
> >>>>>==============================================================================
> >>>>>--- lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl (added)
> >>>>>+++ lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl Thu Feb  9 13:56:04 2006
> >>>>>@@ -0,0 +1,40 @@
> >>>>>+<?xml version="1.0" encoding="UTF-8" ?>
> >>>>>+<!--
> >>>>>+  Copyright 1999-2004 The Apache Software Foundation
> >>>>>+
> >>>>>+  Licensed under the Apache License, Version 2.0 (the "License");
> >>>>>+  you may not use this file except in compliance with the License.
> >>>>>+  You may obtain a copy of the License at
> >>>>>+
> >>>>>+      http://www.apache.org/licenses/LICENSE-2.0
> >>>>>+
> >>>>>+  Unless required by applicable law or agreed to in writing, software
> >>>>>+  distributed under the License is distributed on an "AS IS" BASIS,
> >>>>>+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> >>>>>+  See the License for the specific language governing permissions and
> >>>>>+  limitations under the License.
> >>>>>+-->
> >>>>>+
> >>>>>+<xsl:stylesheet version="1.0"
> >>>>>+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> >>>>>+    >
> >>>>>+
> >>>>>+  <xsl:param name="publicationid" />
> >>>>>+  
> >>>>>+
> >>>>>+  <xsl:template match="@href[starts-with(.,'fallback')]">
> >>>>>+    <xsl:variable name="nofallback" select="substring-after(.,'fallback://lenya/modules/')"/>
> >>>>>+    <xsl:variable name="restype" select="substring-before($nofallback,'/resources')"/>
> >>>>>+    <xsl:variable name="resource" select="substring-after($nofallback,'resources/')"/>
> >>>>>+    <xsl:attribute name="href">
> >>>>>+      <xsl:value-of select="concat('/' , $publicationid, '/modules/' , $restype, '/', $resource)"/>
> >>>>>+    </xsl:attribute>
> >>>>>+  </xsl:template>
> >>>>>+  
> >>>>>+  <xsl:template match="@*|node()">
> >>>>>+    <xsl:copy>
> >>>>>+      <xsl:apply-templates select="@*|node()"/>
> >>>>>+    </xsl:copy>
> >>>>>+  </xsl:template>
> >>>>>+  
> >>>>>+</xsl:stylesheet> 
> >>>>>
> >>>>>Propchange: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
> >>>>>------------------------------------------------------------------------------
> >>>>>   svn:eol-style = native
> >>>>>
> >>>>>
> >>>>>
> >>>>>---------------------------------------------------------------------
> >>>>>To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
> >>>>>For additional commands, e-mail: commits-help@lenya.apache.org
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>>---------------------------------------------------------------------
> >>>>To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> >>>>For additional commands, e-mail: dev-help@lenya.apache.org
> >>>>
> >>>
> >>>---------------------------------------------------------------------
> >>>To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> >>>For additional commands, e-mail: dev-help@lenya.apache.org
> >>>
> >>>
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> >>For additional commands, e-mail: dev-help@lenya.apache.org
> >>
> >>
> > 
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> > For additional commands, e-mail: dev-help@lenya.apache.org
> > 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> For additional commands, e-mail: dev-help@lenya.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: svn commit: r376448 - in /lenya/trunk/src: java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java webapp/lenya/module-resources.xmap webapp/lenya/xslt/resources/external-relax.xsl

Posted by Doug Chestnut <dh...@virginia.edu>.

Josias Thoeny wrote:
> On Fri, 2006-02-10 at 14:53 +0100, Josias Thoeny wrote:
> 
>>On Fri, 2006-02-10 at 08:27 -0500, Doug Chestnut wrote:
>>
>>>Hi Josias,
>>>
>>>Josias Thoeny wrote:
>>>
>>>>On Thu, 2006-02-09 at 21:56 +0000, chestnut@apache.org wrote:
>>>>
>>>>
>>>>>Author: chestnut
>>>>>Date: Thu Feb  9 13:56:04 2006
>>>>>New Revision: 376448
>>>>>
>>>>>URL: http://svn.apache.org/viewcvs?rev=376448&view=rev
>>>>>Log:
>>>>>removal of fallback:// from external relaxng schemas, 
>>>>>while still utilizing fallback functionality by specifying 
>>>>>the publication the schema is being used in
>>>>
>>>>
>>>>Hi Doug,
>>>>
>>>>Thanks for fixing this.
>>>>I just wanted to ask how this relates to the following pipeline in
>>>>global-sitemap.xmap:
>>>>
>>>><!-- RNG fallback requests -->
>>>><map:match pattern="fallback/**.rng">
>>>>  <map:generate src="fallback://{1}.rng"/>
>>>>    <map:transform src="lenya/xslt/util/translate-rng-includes.xsl">
>>>>       <map:parameter name="contextprefix"
>>>>value="{request:contextPath}"/>
>>>>    </map:transform>
>>>>  <map:serialize type="xml"/>
>>>></map:match>
>>>>
>>>>Is this pipeline now obsolete?
>>>
>>>Yes, I think so, but I will do a search just to make sure it is still 
>>>being used, then remove.
>>>
>>>>It uses translate-rng-includes.xsl to replace the schema include. Is
>>>>this xsl still necessary now?
>>>
>>>Same here. I will also take a look at translate-rng-includes.xsl to be 
>>>sure I have the logic correct in external-relax.xsl.  While at it I will 
>>>rename to translate-rng-includes.xsl since it is more descriptive.
>>>
>>>This fallback/**.rng match wasn't working properly since the pubid 
>>>wasn't specified.  The core rng was always used (by bxe).  We could have 
>>>fixed this by just changing the match pattern to {pubid}/fallback/**.rng 
>>>but I figured that this was better handled by our new 
>>>modules-resources.xmap.
>>>
>>
>>A few more comments:
>>I noticed that BXE is not saving properly. The cause seems to be the
>>following include in xhtml.rng:
>>
>><include href="fallback://lenya/resources/schemas/lenya.rng"/>
>>
>>It gets transformed to 
>>
>><include href="/default/modules//"/>
>>
>>
>>The rng-translating xsl probably should rewrite this href also, but how
>>to handle such fallback urls which don't belong to a module?
>>If fallback should work properly, the pubid should be used also, right?
>>
>>So how should the url look like?
>>Maybe:
>>/pubid/fallback/resources/schemas/lenya.rng
> 
> 
> After a second thought, I'd prefer to use only _one_ way to transform
> fallback:// URIs into http:// URIs.

I agree ;).

> 
> Examples:
> 
> fallback://lenya/resources/schemas/lenya.rng
> ->
> /context-prefix/pubid/fallback/lenya/resources/schemas/lenya.rng
> 
> fallback://lenya/modules/xhtml/resources/schemas/xhtml/xhtml-basic.rng
> ->
> /context-prefix/pubid/fallback/lenya/modules/xhtml/resources/schemas/xhtml/xhtml-basic.rng
> 
> fallback://resources/shared/javascript/foo.js
> -> 
> /context-prefix/pubid/fallback/resources/shared/javascript/foo.js
> 
Requests for resources already use fallback:// (or should).
Examples:
fallback//lenya/resources/schemas/lenya.rng
->
/context-prefix/pubid/lenya/schemas/lenya.rng

*since fallback should be enabled for all resource requests, it isn't 
needed in the url
*since we only want to allow access to resources, it can be dropped as well
*core resources like /context-prefix/lenya/css/menu.css should be ->
/context-prefix/pubid/lenya/css/menu.css so publications can define 
their own look and feel
*don't think this works now, but should?

fallback://lenya/modules/xhtml/resources/schemas/xhtml/xhtml-basic.rng
->
/context-prefix/pubid/modules/xhtml/schemas/xhtml-basic.rng
*access to module resources is the function of module-resources.xmap
*fallback is (or should be) supported in sitemap

fallback://resources/shared/javascript/foo.js
->
/context-prefix/pubid/area/javascript/foo.js
*access to pub shared resources is the function of resources-shared.xmap
*fallback is (or should be) supported in sitemap

I just don't think that we need to specify "fallback" for requests for 
resources.  I can't think of an instance when fallback wouldn't be desired.

WDYT?

--Doug

> 
> Or would the following solution be better: 
> If a requested RNG (or XSL) file contains an include using the
> fallback:// protocol, resolve the URI and replace it by the actual URL
> before sending the file to the client, instead of letting the client
> request /fallback uris?
Perhaps this is what I am saying
> 
> Any opinions?
> 
> BTW, what is the "/lenya" for in fallback://lenya/something ?
> Is it really necessary?
> 
> Josias
> 
> 
>>WDOT?
>>
>>And another thing: The context prefix should be prepended to the url, as
>>it was done in translate-rng-includes.xsl.
>>Otherwise it won't work in tomcat, when Lenya is deployed in /lenya.
>>
>>Josias
>>
>>
>>>Thanks for keeping watch,
>>>--Doug
>>>
>>>>Josias
>>>>
>>>>
>>>>
>>>>
>>>>>Added:
>>>>>   lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl   (with props)
>>>>>Modified:
>>>>>   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
>>>>>   lenya/trunk/src/webapp/lenya/module-resources.xmap
>>>>>
>>>>>Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
>>>>>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java?rev=376448&r1=376447&r2=376448&view=diff
>>>>>==============================================================================
>>>>>--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java (original)
>>>>>+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java Thu Feb  9 13:56:04 2006
>>>>>@@ -27,6 +27,7 @@
>>>>>import org.apache.cocoon.components.modules.input.AbstractInputModule;
>>>>>import org.apache.cocoon.environment.ObjectModelHelper;
>>>>>import org.apache.cocoon.environment.Request;
>>>>>+import org.apache.lenya.cms.publication.Publication;
>>>>>import org.apache.lenya.cms.publication.Document;
>>>>>import org.apache.lenya.cms.publication.DocumentIdentityMap;
>>>>>import org.apache.lenya.cms.publication.ResourceType;
>>>>>@@ -57,6 +58,7 @@
>>>>>            Session session = RepositoryUtil.getSession(request, getLogger());
>>>>>
>>>>>            ResourceType resourceType;
>>>>>+            Publication pub = null;
>>>>>            String attribute;
>>>>>
>>>>>            String[] steps = name.split(":");
>>>>>@@ -68,6 +70,7 @@
>>>>>                String webappUrl = ServletHelper.getWebappURI(request);
>>>>>                Document document = docFactory.getFromURL(webappUrl);
>>>>>                resourceType = document.getResourceType();
>>>>>+                pub = document.getPublication();
>>>>>            } else {
>>>>>                attribute = steps[1];
>>>>>                String resourceTypeName = steps[0];
>>>>>@@ -89,8 +92,8 @@
>>>>>                value = resourceType.getSchema().getURI();
>>>>>            } else if (attribute.equals(HTTP_SCHEMA_URI)) {
>>>>>                String uri = resourceType.getSchema().getURI();
>>>>>-                String path = uri.substring("fallback://".length());
>>>>>-                value = request.getContextPath() + "/fallback/" + path;
>>>>>+                String path = uri.substring(uri.indexOf("/schemas"));
>>>>>+                value = request.getContextPath() + "/" + pub.getId() + "/modules/" + resourceType.getName() + path;
>>>>>            } else {
>>>>>                throw new ConfigurationException("Attribute [" + name + "] not supported!");
>>>>>            }
>>>>>
>>>>>Modified: lenya/trunk/src/webapp/lenya/module-resources.xmap
>>>>>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/module-resources.xmap?rev=376448&r1=376447&r2=376448&view=diff
>>>>>==============================================================================
>>>>>--- lenya/trunk/src/webapp/lenya/module-resources.xmap (original)
>>>>>+++ lenya/trunk/src/webapp/lenya/module-resources.xmap Thu Feb  9 13:56:04 2006
>>>>>@@ -20,6 +20,13 @@
>>>>><map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
>>>>>
>>>>>  <map:pipelines>
>>>>>+    <map:pipeline internal-only="true">
>>>>>+      <map:match pattern="*/**.*">
>>>>>+        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
>>>>>+          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
>>>>>+        </map:match> 
>>>>>+      </map:match>
>>>>>+    </map:pipeline>
>>>>>    <map:pipeline>
>>>>>      
>>>>>      <!-- matches modules/*/**.css -->
>>>>>@@ -49,9 +56,13 @@
>>>>>        <map:match type="regexp" pattern="(.*\.)(xml)$"> 
>>>>>          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="text/xml"/>
>>>>>        </map:match>        
>>>>>-        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
>>>>>-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
>>>>>-        </map:match> 
>>>>>+        <map:match type="regexp" pattern="(.*\.)(rng)$">
>>>>>+          <map:generate src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}"/>
>>>>>+          <map:transform src="fallback://lenya/xslt/resources/external-relax.xsl">
>>>>>+            <map:parameter name="publicationid" value="{page-envelope:publication-id}"/>
>>>>>+          </map:transform>
>>>>>+          <map:serialize type="xml"/>
>>>>>+        </map:match>
>>>>>        <map:match type="regexp" pattern="(.*\.)(jpg|JPG|Jpg|jpeg|Jpeg|JPEG)$"> 
>>>>>          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="image/jpeg" />
>>>>>        </map:match> 
>>>>>
>>>>>Added: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
>>>>>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl?rev=376448&view=auto
>>>>>==============================================================================
>>>>>--- lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl (added)
>>>>>+++ lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl Thu Feb  9 13:56:04 2006
>>>>>@@ -0,0 +1,40 @@
>>>>>+<?xml version="1.0" encoding="UTF-8" ?>
>>>>>+<!--
>>>>>+  Copyright 1999-2004 The Apache Software Foundation
>>>>>+
>>>>>+  Licensed under the Apache License, Version 2.0 (the "License");
>>>>>+  you may not use this file except in compliance with the License.
>>>>>+  You may obtain a copy of the License at
>>>>>+
>>>>>+      http://www.apache.org/licenses/LICENSE-2.0
>>>>>+
>>>>>+  Unless required by applicable law or agreed to in writing, software
>>>>>+  distributed under the License is distributed on an "AS IS" BASIS,
>>>>>+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>>>>+  See the License for the specific language governing permissions and
>>>>>+  limitations under the License.
>>>>>+-->
>>>>>+
>>>>>+<xsl:stylesheet version="1.0"
>>>>>+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>>>>>+    >
>>>>>+
>>>>>+  <xsl:param name="publicationid" />
>>>>>+  
>>>>>+
>>>>>+  <xsl:template match="@href[starts-with(.,'fallback')]">
>>>>>+    <xsl:variable name="nofallback" select="substring-after(.,'fallback://lenya/modules/')"/>
>>>>>+    <xsl:variable name="restype" select="substring-before($nofallback,'/resources')"/>
>>>>>+    <xsl:variable name="resource" select="substring-after($nofallback,'resources/')"/>
>>>>>+    <xsl:attribute name="href">
>>>>>+      <xsl:value-of select="concat('/' , $publicationid, '/modules/' , $restype, '/', $resource)"/>
>>>>>+    </xsl:attribute>
>>>>>+  </xsl:template>
>>>>>+  
>>>>>+  <xsl:template match="@*|node()">
>>>>>+    <xsl:copy>
>>>>>+      <xsl:apply-templates select="@*|node()"/>
>>>>>+    </xsl:copy>
>>>>>+  </xsl:template>
>>>>>+  
>>>>>+</xsl:stylesheet> 
>>>>>
>>>>>Propchange: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
>>>>>------------------------------------------------------------------------------
>>>>>   svn:eol-style = native
>>>>>
>>>>>
>>>>>
>>>>>---------------------------------------------------------------------
>>>>>To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
>>>>>For additional commands, e-mail: commits-help@lenya.apache.org
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>---------------------------------------------------------------------
>>>>To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
>>>>For additional commands, e-mail: dev-help@lenya.apache.org
>>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
>>>For additional commands, e-mail: dev-help@lenya.apache.org
>>>
>>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
>>For additional commands, e-mail: dev-help@lenya.apache.org
>>
>>
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> For additional commands, e-mail: dev-help@lenya.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: svn commit: r376448 - in /lenya/trunk/src: java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java webapp/lenya/module-resources.xmap webapp/lenya/xslt/resources/external-relax.xsl

Posted by Josias Thoeny <jo...@wyona.com>.
On Fri, 2006-02-10 at 14:53 +0100, Josias Thoeny wrote:
> On Fri, 2006-02-10 at 08:27 -0500, Doug Chestnut wrote:
> > Hi Josias,
> > 
> > Josias Thoeny wrote:
> > > On Thu, 2006-02-09 at 21:56 +0000, chestnut@apache.org wrote:
> > > 
> > >>Author: chestnut
> > >>Date: Thu Feb  9 13:56:04 2006
> > >>New Revision: 376448
> > >>
> > >>URL: http://svn.apache.org/viewcvs?rev=376448&view=rev
> > >>Log:
> > >>removal of fallback:// from external relaxng schemas, 
> > >>while still utilizing fallback functionality by specifying 
> > >>the publication the schema is being used in
> > > 
> > > 
> > > Hi Doug,
> > > 
> > > Thanks for fixing this.
> > > I just wanted to ask how this relates to the following pipeline in
> > > global-sitemap.xmap:
> > > 
> > > <!-- RNG fallback requests -->
> > > <map:match pattern="fallback/**.rng">
> > >   <map:generate src="fallback://{1}.rng"/>
> > >     <map:transform src="lenya/xslt/util/translate-rng-includes.xsl">
> > >        <map:parameter name="contextprefix"
> > > value="{request:contextPath}"/>
> > >     </map:transform>
> > >   <map:serialize type="xml"/>
> > > </map:match>
> > > 
> > > Is this pipeline now obsolete?
> > Yes, I think so, but I will do a search just to make sure it is still 
> > being used, then remove.
> > > It uses translate-rng-includes.xsl to replace the schema include. Is
> > > this xsl still necessary now?
> > Same here. I will also take a look at translate-rng-includes.xsl to be 
> > sure I have the logic correct in external-relax.xsl.  While at it I will 
> > rename to translate-rng-includes.xsl since it is more descriptive.
> > 
> > This fallback/**.rng match wasn't working properly since the pubid 
> > wasn't specified.  The core rng was always used (by bxe).  We could have 
> > fixed this by just changing the match pattern to {pubid}/fallback/**.rng 
> > but I figured that this was better handled by our new 
> > modules-resources.xmap.
> > 
> 
> A few more comments:
> I noticed that BXE is not saving properly. The cause seems to be the
> following include in xhtml.rng:
> 
> <include href="fallback://lenya/resources/schemas/lenya.rng"/>
> 
> It gets transformed to 
> 
> <include href="/default/modules//"/>
> 
> 
> The rng-translating xsl probably should rewrite this href also, but how
> to handle such fallback urls which don't belong to a module?
> If fallback should work properly, the pubid should be used also, right?
> 
> So how should the url look like?
> Maybe:
> /pubid/fallback/resources/schemas/lenya.rng

After a second thought, I'd prefer to use only _one_ way to transform
fallback:// URIs into http:// URIs.

Examples:

fallback://lenya/resources/schemas/lenya.rng
->
/context-prefix/pubid/fallback/lenya/resources/schemas/lenya.rng

fallback://lenya/modules/xhtml/resources/schemas/xhtml/xhtml-basic.rng
->
/context-prefix/pubid/fallback/lenya/modules/xhtml/resources/schemas/xhtml/xhtml-basic.rng

fallback://resources/shared/javascript/foo.js
-> 
/context-prefix/pubid/fallback/resources/shared/javascript/foo.js


Or would the following solution be better: 
If a requested RNG (or XSL) file contains an include using the
fallback:// protocol, resolve the URI and replace it by the actual URL
before sending the file to the client, instead of letting the client
request /fallback uris?

Any opinions?

BTW, what is the "/lenya" for in fallback://lenya/something ?
Is it really necessary?

Josias

> WDOT?
> 
> And another thing: The context prefix should be prepended to the url, as
> it was done in translate-rng-includes.xsl.
> Otherwise it won't work in tomcat, when Lenya is deployed in /lenya.
> 
> Josias
> 
> > Thanks for keeping watch,
> > --Doug
> > > 
> > > Josias
> > > 
> > > 
> > > 
> > >>Added:
> > >>    lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl   (with props)
> > >>Modified:
> > >>    lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
> > >>    lenya/trunk/src/webapp/lenya/module-resources.xmap
> > >>
> > >>Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
> > >>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java?rev=376448&r1=376447&r2=376448&view=diff
> > >>==============================================================================
> > >>--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java (original)
> > >>+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java Thu Feb  9 13:56:04 2006
> > >>@@ -27,6 +27,7 @@
> > >> import org.apache.cocoon.components.modules.input.AbstractInputModule;
> > >> import org.apache.cocoon.environment.ObjectModelHelper;
> > >> import org.apache.cocoon.environment.Request;
> > >>+import org.apache.lenya.cms.publication.Publication;
> > >> import org.apache.lenya.cms.publication.Document;
> > >> import org.apache.lenya.cms.publication.DocumentIdentityMap;
> > >> import org.apache.lenya.cms.publication.ResourceType;
> > >>@@ -57,6 +58,7 @@
> > >>             Session session = RepositoryUtil.getSession(request, getLogger());
> > >> 
> > >>             ResourceType resourceType;
> > >>+            Publication pub = null;
> > >>             String attribute;
> > >> 
> > >>             String[] steps = name.split(":");
> > >>@@ -68,6 +70,7 @@
> > >>                 String webappUrl = ServletHelper.getWebappURI(request);
> > >>                 Document document = docFactory.getFromURL(webappUrl);
> > >>                 resourceType = document.getResourceType();
> > >>+                pub = document.getPublication();
> > >>             } else {
> > >>                 attribute = steps[1];
> > >>                 String resourceTypeName = steps[0];
> > >>@@ -89,8 +92,8 @@
> > >>                 value = resourceType.getSchema().getURI();
> > >>             } else if (attribute.equals(HTTP_SCHEMA_URI)) {
> > >>                 String uri = resourceType.getSchema().getURI();
> > >>-                String path = uri.substring("fallback://".length());
> > >>-                value = request.getContextPath() + "/fallback/" + path;
> > >>+                String path = uri.substring(uri.indexOf("/schemas"));
> > >>+                value = request.getContextPath() + "/" + pub.getId() + "/modules/" + resourceType.getName() + path;
> > >>             } else {
> > >>                 throw new ConfigurationException("Attribute [" + name + "] not supported!");
> > >>             }
> > >>
> > >>Modified: lenya/trunk/src/webapp/lenya/module-resources.xmap
> > >>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/module-resources.xmap?rev=376448&r1=376447&r2=376448&view=diff
> > >>==============================================================================
> > >>--- lenya/trunk/src/webapp/lenya/module-resources.xmap (original)
> > >>+++ lenya/trunk/src/webapp/lenya/module-resources.xmap Thu Feb  9 13:56:04 2006
> > >>@@ -20,6 +20,13 @@
> > >> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
> > >> 
> > >>   <map:pipelines>
> > >>+    <map:pipeline internal-only="true">
> > >>+      <map:match pattern="*/**.*">
> > >>+        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
> > >>+          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
> > >>+        </map:match> 
> > >>+      </map:match>
> > >>+    </map:pipeline>
> > >>     <map:pipeline>
> > >>       
> > >>       <!-- matches modules/*/**.css -->
> > >>@@ -49,9 +56,13 @@
> > >>         <map:match type="regexp" pattern="(.*\.)(xml)$"> 
> > >>           <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="text/xml"/>
> > >>         </map:match>        
> > >>-        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
> > >>-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
> > >>-        </map:match> 
> > >>+        <map:match type="regexp" pattern="(.*\.)(rng)$">
> > >>+          <map:generate src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}"/>
> > >>+          <map:transform src="fallback://lenya/xslt/resources/external-relax.xsl">
> > >>+            <map:parameter name="publicationid" value="{page-envelope:publication-id}"/>
> > >>+          </map:transform>
> > >>+          <map:serialize type="xml"/>
> > >>+        </map:match>
> > >>         <map:match type="regexp" pattern="(.*\.)(jpg|JPG|Jpg|jpeg|Jpeg|JPEG)$"> 
> > >>           <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="image/jpeg" />
> > >>         </map:match> 
> > >>
> > >>Added: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
> > >>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl?rev=376448&view=auto
> > >>==============================================================================
> > >>--- lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl (added)
> > >>+++ lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl Thu Feb  9 13:56:04 2006
> > >>@@ -0,0 +1,40 @@
> > >>+<?xml version="1.0" encoding="UTF-8" ?>
> > >>+<!--
> > >>+  Copyright 1999-2004 The Apache Software Foundation
> > >>+
> > >>+  Licensed under the Apache License, Version 2.0 (the "License");
> > >>+  you may not use this file except in compliance with the License.
> > >>+  You may obtain a copy of the License at
> > >>+
> > >>+      http://www.apache.org/licenses/LICENSE-2.0
> > >>+
> > >>+  Unless required by applicable law or agreed to in writing, software
> > >>+  distributed under the License is distributed on an "AS IS" BASIS,
> > >>+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> > >>+  See the License for the specific language governing permissions and
> > >>+  limitations under the License.
> > >>+-->
> > >>+
> > >>+<xsl:stylesheet version="1.0"
> > >>+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > >>+    >
> > >>+
> > >>+  <xsl:param name="publicationid" />
> > >>+  
> > >>+
> > >>+  <xsl:template match="@href[starts-with(.,'fallback')]">
> > >>+    <xsl:variable name="nofallback" select="substring-after(.,'fallback://lenya/modules/')"/>
> > >>+    <xsl:variable name="restype" select="substring-before($nofallback,'/resources')"/>
> > >>+    <xsl:variable name="resource" select="substring-after($nofallback,'resources/')"/>
> > >>+    <xsl:attribute name="href">
> > >>+      <xsl:value-of select="concat('/' , $publicationid, '/modules/' , $restype, '/', $resource)"/>
> > >>+    </xsl:attribute>
> > >>+  </xsl:template>
> > >>+  
> > >>+  <xsl:template match="@*|node()">
> > >>+    <xsl:copy>
> > >>+      <xsl:apply-templates select="@*|node()"/>
> > >>+    </xsl:copy>
> > >>+  </xsl:template>
> > >>+  
> > >>+</xsl:stylesheet> 
> > >>
> > >>Propchange: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
> > >>------------------------------------------------------------------------------
> > >>    svn:eol-style = native
> > >>
> > >>
> > >>
> > >>---------------------------------------------------------------------
> > >>To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
> > >>For additional commands, e-mail: commits-help@lenya.apache.org
> > >>
> > >>
> > > 
> > > 
> > > 
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> > > For additional commands, e-mail: dev-help@lenya.apache.org
> > > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> > For additional commands, e-mail: dev-help@lenya.apache.org
> > 
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> For additional commands, e-mail: dev-help@lenya.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: svn commit: r376448 - in /lenya/trunk/src: java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java webapp/lenya/module-resources.xmap webapp/lenya/xslt/resources/external-relax.xsl

Posted by Josias Thoeny <jo...@wyona.com>.
On Fri, 2006-02-10 at 08:27 -0500, Doug Chestnut wrote:
> Hi Josias,
> 
> Josias Thoeny wrote:
> > On Thu, 2006-02-09 at 21:56 +0000, chestnut@apache.org wrote:
> > 
> >>Author: chestnut
> >>Date: Thu Feb  9 13:56:04 2006
> >>New Revision: 376448
> >>
> >>URL: http://svn.apache.org/viewcvs?rev=376448&view=rev
> >>Log:
> >>removal of fallback:// from external relaxng schemas, 
> >>while still utilizing fallback functionality by specifying 
> >>the publication the schema is being used in
> > 
> > 
> > Hi Doug,
> > 
> > Thanks for fixing this.
> > I just wanted to ask how this relates to the following pipeline in
> > global-sitemap.xmap:
> > 
> > <!-- RNG fallback requests -->
> > <map:match pattern="fallback/**.rng">
> >   <map:generate src="fallback://{1}.rng"/>
> >     <map:transform src="lenya/xslt/util/translate-rng-includes.xsl">
> >        <map:parameter name="contextprefix"
> > value="{request:contextPath}"/>
> >     </map:transform>
> >   <map:serialize type="xml"/>
> > </map:match>
> > 
> > Is this pipeline now obsolete?
> Yes, I think so, but I will do a search just to make sure it is still 
> being used, then remove.
> > It uses translate-rng-includes.xsl to replace the schema include. Is
> > this xsl still necessary now?
> Same here. I will also take a look at translate-rng-includes.xsl to be 
> sure I have the logic correct in external-relax.xsl.  While at it I will 
> rename to translate-rng-includes.xsl since it is more descriptive.
> 
> This fallback/**.rng match wasn't working properly since the pubid 
> wasn't specified.  The core rng was always used (by bxe).  We could have 
> fixed this by just changing the match pattern to {pubid}/fallback/**.rng 
> but I figured that this was better handled by our new 
> modules-resources.xmap.
> 

A few more comments:
I noticed that BXE is not saving properly. The cause seems to be the
following include in xhtml.rng:

<include href="fallback://lenya/resources/schemas/lenya.rng"/>

It gets transformed to 

<include href="/default/modules//"/>


The rng-translating xsl probably should rewrite this href also, but how
to handle such fallback urls which don't belong to a module?
If fallback should work properly, the pubid should be used also, right?

So how should the url look like?
Maybe:
/pubid/fallback/resources/schemas/lenya.rng

WDOT?

And another thing: The context prefix should be prepended to the url, as
it was done in translate-rng-includes.xsl.
Otherwise it won't work in tomcat, when Lenya is deployed in /lenya.

Josias

> Thanks for keeping watch,
> --Doug
> > 
> > Josias
> > 
> > 
> > 
> >>Added:
> >>    lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl   (with props)
> >>Modified:
> >>    lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
> >>    lenya/trunk/src/webapp/lenya/module-resources.xmap
> >>
> >>Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
> >>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java?rev=376448&r1=376447&r2=376448&view=diff
> >>==============================================================================
> >>--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java (original)
> >>+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java Thu Feb  9 13:56:04 2006
> >>@@ -27,6 +27,7 @@
> >> import org.apache.cocoon.components.modules.input.AbstractInputModule;
> >> import org.apache.cocoon.environment.ObjectModelHelper;
> >> import org.apache.cocoon.environment.Request;
> >>+import org.apache.lenya.cms.publication.Publication;
> >> import org.apache.lenya.cms.publication.Document;
> >> import org.apache.lenya.cms.publication.DocumentIdentityMap;
> >> import org.apache.lenya.cms.publication.ResourceType;
> >>@@ -57,6 +58,7 @@
> >>             Session session = RepositoryUtil.getSession(request, getLogger());
> >> 
> >>             ResourceType resourceType;
> >>+            Publication pub = null;
> >>             String attribute;
> >> 
> >>             String[] steps = name.split(":");
> >>@@ -68,6 +70,7 @@
> >>                 String webappUrl = ServletHelper.getWebappURI(request);
> >>                 Document document = docFactory.getFromURL(webappUrl);
> >>                 resourceType = document.getResourceType();
> >>+                pub = document.getPublication();
> >>             } else {
> >>                 attribute = steps[1];
> >>                 String resourceTypeName = steps[0];
> >>@@ -89,8 +92,8 @@
> >>                 value = resourceType.getSchema().getURI();
> >>             } else if (attribute.equals(HTTP_SCHEMA_URI)) {
> >>                 String uri = resourceType.getSchema().getURI();
> >>-                String path = uri.substring("fallback://".length());
> >>-                value = request.getContextPath() + "/fallback/" + path;
> >>+                String path = uri.substring(uri.indexOf("/schemas"));
> >>+                value = request.getContextPath() + "/" + pub.getId() + "/modules/" + resourceType.getName() + path;
> >>             } else {
> >>                 throw new ConfigurationException("Attribute [" + name + "] not supported!");
> >>             }
> >>
> >>Modified: lenya/trunk/src/webapp/lenya/module-resources.xmap
> >>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/module-resources.xmap?rev=376448&r1=376447&r2=376448&view=diff
> >>==============================================================================
> >>--- lenya/trunk/src/webapp/lenya/module-resources.xmap (original)
> >>+++ lenya/trunk/src/webapp/lenya/module-resources.xmap Thu Feb  9 13:56:04 2006
> >>@@ -20,6 +20,13 @@
> >> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
> >> 
> >>   <map:pipelines>
> >>+    <map:pipeline internal-only="true">
> >>+      <map:match pattern="*/**.*">
> >>+        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
> >>+          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
> >>+        </map:match> 
> >>+      </map:match>
> >>+    </map:pipeline>
> >>     <map:pipeline>
> >>       
> >>       <!-- matches modules/*/**.css -->
> >>@@ -49,9 +56,13 @@
> >>         <map:match type="regexp" pattern="(.*\.)(xml)$"> 
> >>           <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="text/xml"/>
> >>         </map:match>        
> >>-        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
> >>-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
> >>-        </map:match> 
> >>+        <map:match type="regexp" pattern="(.*\.)(rng)$">
> >>+          <map:generate src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}"/>
> >>+          <map:transform src="fallback://lenya/xslt/resources/external-relax.xsl">
> >>+            <map:parameter name="publicationid" value="{page-envelope:publication-id}"/>
> >>+          </map:transform>
> >>+          <map:serialize type="xml"/>
> >>+        </map:match>
> >>         <map:match type="regexp" pattern="(.*\.)(jpg|JPG|Jpg|jpeg|Jpeg|JPEG)$"> 
> >>           <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="image/jpeg" />
> >>         </map:match> 
> >>
> >>Added: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
> >>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl?rev=376448&view=auto
> >>==============================================================================
> >>--- lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl (added)
> >>+++ lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl Thu Feb  9 13:56:04 2006
> >>@@ -0,0 +1,40 @@
> >>+<?xml version="1.0" encoding="UTF-8" ?>
> >>+<!--
> >>+  Copyright 1999-2004 The Apache Software Foundation
> >>+
> >>+  Licensed under the Apache License, Version 2.0 (the "License");
> >>+  you may not use this file except in compliance with the License.
> >>+  You may obtain a copy of the License at
> >>+
> >>+      http://www.apache.org/licenses/LICENSE-2.0
> >>+
> >>+  Unless required by applicable law or agreed to in writing, software
> >>+  distributed under the License is distributed on an "AS IS" BASIS,
> >>+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> >>+  See the License for the specific language governing permissions and
> >>+  limitations under the License.
> >>+-->
> >>+
> >>+<xsl:stylesheet version="1.0"
> >>+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> >>+    >
> >>+
> >>+  <xsl:param name="publicationid" />
> >>+  
> >>+
> >>+  <xsl:template match="@href[starts-with(.,'fallback')]">
> >>+    <xsl:variable name="nofallback" select="substring-after(.,'fallback://lenya/modules/')"/>
> >>+    <xsl:variable name="restype" select="substring-before($nofallback,'/resources')"/>
> >>+    <xsl:variable name="resource" select="substring-after($nofallback,'resources/')"/>
> >>+    <xsl:attribute name="href">
> >>+      <xsl:value-of select="concat('/' , $publicationid, '/modules/' , $restype, '/', $resource)"/>
> >>+    </xsl:attribute>
> >>+  </xsl:template>
> >>+  
> >>+  <xsl:template match="@*|node()">
> >>+    <xsl:copy>
> >>+      <xsl:apply-templates select="@*|node()"/>
> >>+    </xsl:copy>
> >>+  </xsl:template>
> >>+  
> >>+</xsl:stylesheet> 
> >>
> >>Propchange: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
> >>------------------------------------------------------------------------------
> >>    svn:eol-style = native
> >>
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
> >>For additional commands, e-mail: commits-help@lenya.apache.org
> >>
> >>
> > 
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> > For additional commands, e-mail: dev-help@lenya.apache.org
> > 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> For additional commands, e-mail: dev-help@lenya.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: svn commit: r376448 - in /lenya/trunk/src: java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java webapp/lenya/module-resources.xmap webapp/lenya/xslt/resources/external-relax.xsl

Posted by Doug Chestnut <dh...@virginia.edu>.
Hi Josias,

Josias Thoeny wrote:
> On Thu, 2006-02-09 at 21:56 +0000, chestnut@apache.org wrote:
> 
>>Author: chestnut
>>Date: Thu Feb  9 13:56:04 2006
>>New Revision: 376448
>>
>>URL: http://svn.apache.org/viewcvs?rev=376448&view=rev
>>Log:
>>removal of fallback:// from external relaxng schemas, 
>>while still utilizing fallback functionality by specifying 
>>the publication the schema is being used in
> 
> 
> Hi Doug,
> 
> Thanks for fixing this.
> I just wanted to ask how this relates to the following pipeline in
> global-sitemap.xmap:
> 
> <!-- RNG fallback requests -->
> <map:match pattern="fallback/**.rng">
>   <map:generate src="fallback://{1}.rng"/>
>     <map:transform src="lenya/xslt/util/translate-rng-includes.xsl">
>        <map:parameter name="contextprefix"
> value="{request:contextPath}"/>
>     </map:transform>
>   <map:serialize type="xml"/>
> </map:match>
> 
> Is this pipeline now obsolete?
Yes, I think so, but I will do a search just to make sure it is still 
being used, then remove.
> It uses translate-rng-includes.xsl to replace the schema include. Is
> this xsl still necessary now?
Same here. I will also take a look at translate-rng-includes.xsl to be 
sure I have the logic correct in external-relax.xsl.  While at it I will 
rename to translate-rng-includes.xsl since it is more descriptive.

This fallback/**.rng match wasn't working properly since the pubid 
wasn't specified.  The core rng was always used (by bxe).  We could have 
fixed this by just changing the match pattern to {pubid}/fallback/**.rng 
but I figured that this was better handled by our new 
modules-resources.xmap.

Thanks for keeping watch,
--Doug
> 
> Josias
> 
> 
> 
>>Added:
>>    lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl   (with props)
>>Modified:
>>    lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
>>    lenya/trunk/src/webapp/lenya/module-resources.xmap
>>
>>Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
>>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java?rev=376448&r1=376447&r2=376448&view=diff
>>==============================================================================
>>--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java (original)
>>+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java Thu Feb  9 13:56:04 2006
>>@@ -27,6 +27,7 @@
>> import org.apache.cocoon.components.modules.input.AbstractInputModule;
>> import org.apache.cocoon.environment.ObjectModelHelper;
>> import org.apache.cocoon.environment.Request;
>>+import org.apache.lenya.cms.publication.Publication;
>> import org.apache.lenya.cms.publication.Document;
>> import org.apache.lenya.cms.publication.DocumentIdentityMap;
>> import org.apache.lenya.cms.publication.ResourceType;
>>@@ -57,6 +58,7 @@
>>             Session session = RepositoryUtil.getSession(request, getLogger());
>> 
>>             ResourceType resourceType;
>>+            Publication pub = null;
>>             String attribute;
>> 
>>             String[] steps = name.split(":");
>>@@ -68,6 +70,7 @@
>>                 String webappUrl = ServletHelper.getWebappURI(request);
>>                 Document document = docFactory.getFromURL(webappUrl);
>>                 resourceType = document.getResourceType();
>>+                pub = document.getPublication();
>>             } else {
>>                 attribute = steps[1];
>>                 String resourceTypeName = steps[0];
>>@@ -89,8 +92,8 @@
>>                 value = resourceType.getSchema().getURI();
>>             } else if (attribute.equals(HTTP_SCHEMA_URI)) {
>>                 String uri = resourceType.getSchema().getURI();
>>-                String path = uri.substring("fallback://".length());
>>-                value = request.getContextPath() + "/fallback/" + path;
>>+                String path = uri.substring(uri.indexOf("/schemas"));
>>+                value = request.getContextPath() + "/" + pub.getId() + "/modules/" + resourceType.getName() + path;
>>             } else {
>>                 throw new ConfigurationException("Attribute [" + name + "] not supported!");
>>             }
>>
>>Modified: lenya/trunk/src/webapp/lenya/module-resources.xmap
>>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/module-resources.xmap?rev=376448&r1=376447&r2=376448&view=diff
>>==============================================================================
>>--- lenya/trunk/src/webapp/lenya/module-resources.xmap (original)
>>+++ lenya/trunk/src/webapp/lenya/module-resources.xmap Thu Feb  9 13:56:04 2006
>>@@ -20,6 +20,13 @@
>> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
>> 
>>   <map:pipelines>
>>+    <map:pipeline internal-only="true">
>>+      <map:match pattern="*/**.*">
>>+        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
>>+          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
>>+        </map:match> 
>>+      </map:match>
>>+    </map:pipeline>
>>     <map:pipeline>
>>       
>>       <!-- matches modules/*/**.css -->
>>@@ -49,9 +56,13 @@
>>         <map:match type="regexp" pattern="(.*\.)(xml)$"> 
>>           <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="text/xml"/>
>>         </map:match>        
>>-        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
>>-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
>>-        </map:match> 
>>+        <map:match type="regexp" pattern="(.*\.)(rng)$">
>>+          <map:generate src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}"/>
>>+          <map:transform src="fallback://lenya/xslt/resources/external-relax.xsl">
>>+            <map:parameter name="publicationid" value="{page-envelope:publication-id}"/>
>>+          </map:transform>
>>+          <map:serialize type="xml"/>
>>+        </map:match>
>>         <map:match type="regexp" pattern="(.*\.)(jpg|JPG|Jpg|jpeg|Jpeg|JPEG)$"> 
>>           <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="image/jpeg" />
>>         </map:match> 
>>
>>Added: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
>>URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl?rev=376448&view=auto
>>==============================================================================
>>--- lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl (added)
>>+++ lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl Thu Feb  9 13:56:04 2006
>>@@ -0,0 +1,40 @@
>>+<?xml version="1.0" encoding="UTF-8" ?>
>>+<!--
>>+  Copyright 1999-2004 The Apache Software Foundation
>>+
>>+  Licensed under the Apache License, Version 2.0 (the "License");
>>+  you may not use this file except in compliance with the License.
>>+  You may obtain a copy of the License at
>>+
>>+      http://www.apache.org/licenses/LICENSE-2.0
>>+
>>+  Unless required by applicable law or agreed to in writing, software
>>+  distributed under the License is distributed on an "AS IS" BASIS,
>>+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>+  See the License for the specific language governing permissions and
>>+  limitations under the License.
>>+-->
>>+
>>+<xsl:stylesheet version="1.0"
>>+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>>+    >
>>+
>>+  <xsl:param name="publicationid" />
>>+  
>>+
>>+  <xsl:template match="@href[starts-with(.,'fallback')]">
>>+    <xsl:variable name="nofallback" select="substring-after(.,'fallback://lenya/modules/')"/>
>>+    <xsl:variable name="restype" select="substring-before($nofallback,'/resources')"/>
>>+    <xsl:variable name="resource" select="substring-after($nofallback,'resources/')"/>
>>+    <xsl:attribute name="href">
>>+      <xsl:value-of select="concat('/' , $publicationid, '/modules/' , $restype, '/', $resource)"/>
>>+    </xsl:attribute>
>>+  </xsl:template>
>>+  
>>+  <xsl:template match="@*|node()">
>>+    <xsl:copy>
>>+      <xsl:apply-templates select="@*|node()"/>
>>+    </xsl:copy>
>>+  </xsl:template>
>>+  
>>+</xsl:stylesheet> 
>>
>>Propchange: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
>>------------------------------------------------------------------------------
>>    svn:eol-style = native
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
>>For additional commands, e-mail: commits-help@lenya.apache.org
>>
>>
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> For additional commands, e-mail: dev-help@lenya.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: svn commit: r376448 - in /lenya/trunk/src: java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java webapp/lenya/module-resources.xmap webapp/lenya/xslt/resources/external-relax.xsl

Posted by Josias Thoeny <jo...@wyona.com>.
On Thu, 2006-02-09 at 21:56 +0000, chestnut@apache.org wrote:
> Author: chestnut
> Date: Thu Feb  9 13:56:04 2006
> New Revision: 376448
> 
> URL: http://svn.apache.org/viewcvs?rev=376448&view=rev
> Log:
> removal of fallback:// from external relaxng schemas, 
> while still utilizing fallback functionality by specifying 
> the publication the schema is being used in

Hi Doug,

Thanks for fixing this.
I just wanted to ask how this relates to the following pipeline in
global-sitemap.xmap:

<!-- RNG fallback requests -->
<map:match pattern="fallback/**.rng">
  <map:generate src="fallback://{1}.rng"/>
    <map:transform src="lenya/xslt/util/translate-rng-includes.xsl">
       <map:parameter name="contextprefix"
value="{request:contextPath}"/>
    </map:transform>
  <map:serialize type="xml"/>
</map:match>

Is this pipeline now obsolete?
It uses translate-rng-includes.xsl to replace the schema include. Is
this xsl still necessary now?

Josias


> 
> Added:
>     lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl   (with props)
> Modified:
>     lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
>     lenya/trunk/src/webapp/lenya/module-resources.xmap
> 
> Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
> URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java?rev=376448&r1=376447&r2=376448&view=diff
> ==============================================================================
> --- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java (original)
> +++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java Thu Feb  9 13:56:04 2006
> @@ -27,6 +27,7 @@
>  import org.apache.cocoon.components.modules.input.AbstractInputModule;
>  import org.apache.cocoon.environment.ObjectModelHelper;
>  import org.apache.cocoon.environment.Request;
> +import org.apache.lenya.cms.publication.Publication;
>  import org.apache.lenya.cms.publication.Document;
>  import org.apache.lenya.cms.publication.DocumentIdentityMap;
>  import org.apache.lenya.cms.publication.ResourceType;
> @@ -57,6 +58,7 @@
>              Session session = RepositoryUtil.getSession(request, getLogger());
>  
>              ResourceType resourceType;
> +            Publication pub = null;
>              String attribute;
>  
>              String[] steps = name.split(":");
> @@ -68,6 +70,7 @@
>                  String webappUrl = ServletHelper.getWebappURI(request);
>                  Document document = docFactory.getFromURL(webappUrl);
>                  resourceType = document.getResourceType();
> +                pub = document.getPublication();
>              } else {
>                  attribute = steps[1];
>                  String resourceTypeName = steps[0];
> @@ -89,8 +92,8 @@
>                  value = resourceType.getSchema().getURI();
>              } else if (attribute.equals(HTTP_SCHEMA_URI)) {
>                  String uri = resourceType.getSchema().getURI();
> -                String path = uri.substring("fallback://".length());
> -                value = request.getContextPath() + "/fallback/" + path;
> +                String path = uri.substring(uri.indexOf("/schemas"));
> +                value = request.getContextPath() + "/" + pub.getId() + "/modules/" + resourceType.getName() + path;
>              } else {
>                  throw new ConfigurationException("Attribute [" + name + "] not supported!");
>              }
> 
> Modified: lenya/trunk/src/webapp/lenya/module-resources.xmap
> URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/module-resources.xmap?rev=376448&r1=376447&r2=376448&view=diff
> ==============================================================================
> --- lenya/trunk/src/webapp/lenya/module-resources.xmap (original)
> +++ lenya/trunk/src/webapp/lenya/module-resources.xmap Thu Feb  9 13:56:04 2006
> @@ -20,6 +20,13 @@
>  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
>  
>    <map:pipelines>
> +    <map:pipeline internal-only="true">
> +      <map:match pattern="*/**.*">
> +        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
> +          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
> +        </map:match> 
> +      </map:match>
> +    </map:pipeline>
>      <map:pipeline>
>        
>        <!-- matches modules/*/**.css -->
> @@ -49,9 +56,13 @@
>          <map:match type="regexp" pattern="(.*\.)(xml)$"> 
>            <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="text/xml"/>
>          </map:match>        
> -        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
> -          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
> -        </map:match> 
> +        <map:match type="regexp" pattern="(.*\.)(rng)$">
> +          <map:generate src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}"/>
> +          <map:transform src="fallback://lenya/xslt/resources/external-relax.xsl">
> +            <map:parameter name="publicationid" value="{page-envelope:publication-id}"/>
> +          </map:transform>
> +          <map:serialize type="xml"/>
> +        </map:match>
>          <map:match type="regexp" pattern="(.*\.)(jpg|JPG|Jpg|jpeg|Jpeg|JPEG)$"> 
>            <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="image/jpeg" />
>          </map:match> 
> 
> Added: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
> URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl?rev=376448&view=auto
> ==============================================================================
> --- lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl (added)
> +++ lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl Thu Feb  9 13:56:04 2006
> @@ -0,0 +1,40 @@
> +<?xml version="1.0" encoding="UTF-8" ?>
> +<!--
> +  Copyright 1999-2004 The Apache Software Foundation
> +
> +  Licensed under the Apache License, Version 2.0 (the "License");
> +  you may not use this file except in compliance with the License.
> +  You may obtain a copy of the License at
> +
> +      http://www.apache.org/licenses/LICENSE-2.0
> +
> +  Unless required by applicable law or agreed to in writing, software
> +  distributed under the License is distributed on an "AS IS" BASIS,
> +  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> +  See the License for the specific language governing permissions and
> +  limitations under the License.
> +-->
> +
> +<xsl:stylesheet version="1.0"
> +    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> +    >
> +
> +  <xsl:param name="publicationid" />
> +  
> +
> +  <xsl:template match="@href[starts-with(.,'fallback')]">
> +    <xsl:variable name="nofallback" select="substring-after(.,'fallback://lenya/modules/')"/>
> +    <xsl:variable name="restype" select="substring-before($nofallback,'/resources')"/>
> +    <xsl:variable name="resource" select="substring-after($nofallback,'resources/')"/>
> +    <xsl:attribute name="href">
> +      <xsl:value-of select="concat('/' , $publicationid, '/modules/' , $restype, '/', $resource)"/>
> +    </xsl:attribute>
> +  </xsl:template>
> +  
> +  <xsl:template match="@*|node()">
> +    <xsl:copy>
> +      <xsl:apply-templates select="@*|node()"/>
> +    </xsl:copy>
> +  </xsl:template>
> +  
> +</xsl:stylesheet> 
> 
> Propchange: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
> ------------------------------------------------------------------------------
>     svn:eol-style = native
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
> For additional commands, e-mail: commits-help@lenya.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org