You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2013/01/08 17:47:33 UTC

svn commit: r1430375 - in /lenya/branches/BRANCH_2_1_X/src/modules/resource: java/src/org/apache/lenya/cms/cocoon/selection/MediaTypeSelector.java java/src/org/apache/lenya/modules/resource/MediaTypeParser.java xslt/resource2xhtml.xsl

Author: andreas
Date: Tue Jan  8 16:47:33 2013
New Revision: 1430375

URL: http://svn.apache.org/viewvc?rev=1430375&view=rev
Log:
Ignore */* media type if other media types are requested, fix resource preview for non-suffix URIs.

Modified:
    lenya/branches/BRANCH_2_1_X/src/modules/resource/java/src/org/apache/lenya/cms/cocoon/selection/MediaTypeSelector.java
    lenya/branches/BRANCH_2_1_X/src/modules/resource/java/src/org/apache/lenya/modules/resource/MediaTypeParser.java
    lenya/branches/BRANCH_2_1_X/src/modules/resource/xslt/resource2xhtml.xsl

Modified: lenya/branches/BRANCH_2_1_X/src/modules/resource/java/src/org/apache/lenya/cms/cocoon/selection/MediaTypeSelector.java
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_2_1_X/src/modules/resource/java/src/org/apache/lenya/cms/cocoon/selection/MediaTypeSelector.java?rev=1430375&r1=1430374&r2=1430375&view=diff
==============================================================================
--- lenya/branches/BRANCH_2_1_X/src/modules/resource/java/src/org/apache/lenya/cms/cocoon/selection/MediaTypeSelector.java (original)
+++ lenya/branches/BRANCH_2_1_X/src/modules/resource/java/src/org/apache/lenya/cms/cocoon/selection/MediaTypeSelector.java Tue Jan  8 16:47:33 2013
@@ -31,9 +31,15 @@ import org.apache.lenya.modules.resource
 import com.google.common.base.Optional;
 
 /**
+ * <p>
  * Compares the media type passed as expression to the Accept header of the HTTP request.
- * Returns true if the media type matches. Matches with the double-wildcard (universal)
- * media type are ignored.
+ * Returns true if the media type matches.
+ * </p>
+ * <p>
+ * If the Accept header contains specific media types and additional the double-wildcard
+ * (universal) media type, and only the universal media type is matched, this match is
+ * ignored.
+ * </p>
  */
 public class MediaTypeSelector extends AbstractLogEnabled implements Selector {
 
@@ -48,10 +54,11 @@ public class MediaTypeSelector extends A
                 Arrays.asList(expression.split("\\s,\\s")),
                 request.getHeader("Accept"),
                 true);
-        getLogger().info(
-                    "Accepted: " + expression
-                + "\nHeader:   " + request.getHeader("Accept")
-                + "\nDetected: " + type.or("-"));
+        getLogger().debug(
+                  request.getRequestURI()
+                + "\n  Accepted: " + expression
+                + "\n  Header:   " + request.getHeader("Accept")
+                + "\n  Detected: " + type.or("-"));
         return type.isPresent() && !type.equals("*/*");
     }
 

Modified: lenya/branches/BRANCH_2_1_X/src/modules/resource/java/src/org/apache/lenya/modules/resource/MediaTypeParser.java
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_2_1_X/src/modules/resource/java/src/org/apache/lenya/modules/resource/MediaTypeParser.java?rev=1430375&r1=1430374&r2=1430375&view=diff
==============================================================================
--- lenya/branches/BRANCH_2_1_X/src/modules/resource/java/src/org/apache/lenya/modules/resource/MediaTypeParser.java (original)
+++ lenya/branches/BRANCH_2_1_X/src/modules/resource/java/src/org/apache/lenya/modules/resource/MediaTypeParser.java Tue Jan  8 16:47:33 2013
@@ -226,9 +226,11 @@ public final class MediaTypeParser {
     public static Optional<String> bestMatch(Collection<String> supported, String header, boolean excludeAllType) {
         List<ParseResults> parseResults = new LinkedList<ParseResults>();
         List<FitnessAndQuality> weightedMatches = new LinkedList<FitnessAndQuality>();
-        for (String r : StringUtils.split(header, ',')) {
+        final String[] mediaTypes = StringUtils.split(header, ',');
+        final boolean exclude = excludeAllType && mediaTypes.length > 1;
+        for (String r : mediaTypes) {
             ParseResults result = parseMediaRange(r);
-            if (!(excludeAllType && result.type.equals("*") && result.subType.equals("*"))) {
+            if (!(exclude && result.type.equals("*") && result.subType.equals("*"))) {
                 parseResults.add(result);
             }
         }

Modified: lenya/branches/BRANCH_2_1_X/src/modules/resource/xslt/resource2xhtml.xsl
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_2_1_X/src/modules/resource/xslt/resource2xhtml.xsl?rev=1430375&r1=1430374&r2=1430375&view=diff
==============================================================================
--- lenya/branches/BRANCH_2_1_X/src/modules/resource/xslt/resource2xhtml.xsl (original)
+++ lenya/branches/BRANCH_2_1_X/src/modules/resource/xslt/resource2xhtml.xsl Tue Jan  8 16:47:33 2013
@@ -50,7 +50,17 @@ limitations under the License.
     </xsl:if>
   </xsl:variable>
   
-  <xsl:variable name="mediaUrl" select="concat(substring-before($documentUrl, '.html'), '.', $sourceExtension, $revisionSuffix)"/>
+  <xsl:variable name="mediaBaseUrl">
+    <xsl:choose>
+      <xsl:when test="contains($documentUrl, '.html')">
+        <xsl:value-of select="substring-before($documentUrl, '.html')"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$documentUrl"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+  <xsl:variable name="mediaUrl" select="concat($mediaBaseUrl, '.', $sourceExtension, $revisionSuffix)"/>
   
   <xsl:template match="/">
     <html>



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