You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2007/05/23 22:59:10 UTC
svn commit: r541071 - in /incubator/abdera/java/trunk:
client/src/main/java/org/apache/abdera/protocol/client/
dependencies/i18n/src/main/java/org/apache/abdera/i18n/iri/
protocol/src/main/java/org/apache/abdera/protocol/util/
server/src/main/java/org/...
Author: jmsnell
Date: Wed May 23 13:59:09 2007
New Revision: 541071
URL: http://svn.apache.org/viewvc?view=rev&rev=541071
Log:
The next draft of the APP spec (15) changes the Slug header to use pct-encoding instead of RFC2047.
This update accepts RFC2047 and pct-encoded headers, but makes it so that only pct-encoded headers are produced.
Also, throw an error when the forbidden LF and CR characters are used in the slug.
Modified:
incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/client/RequestOptions.java
incubator/abdera/java/trunk/dependencies/i18n/src/main/java/org/apache/abdera/i18n/iri/Constants.java
incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/AbstractRequest.java
incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/AbstractResponse.java
incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/provider/AbstractResponseContext.java
Modified: incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/client/RequestOptions.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/client/RequestOptions.java?view=diff&rev=541071&r1=541070&r2=541071
==============================================================================
--- incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/client/RequestOptions.java (original)
+++ incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/client/RequestOptions.java Wed May 23 13:59:09 2007
@@ -26,6 +26,8 @@
import javax.activation.MimeType;
+import org.apache.abdera.i18n.iri.Constants;
+import org.apache.abdera.i18n.iri.Escaping;
import org.apache.abdera.protocol.Request;
import org.apache.abdera.protocol.util.AbstractRequest;
import org.apache.abdera.protocol.util.CacheControlUtil;
@@ -379,14 +381,11 @@
* Sets the value of the Atom Publishing Protocol Slug header
*/
public void setSlug(String slug) {
- setHeader("Slug", slug);
- }
-
- /**
- * Sets the value of the Atom Publishing Protocol Slug header
- */
- public void setSlug(String slug, String charset) {
- setEncodedHeader("Slug", charset, slug);
+ if (slug.indexOf((char)10) > -1 ||
+ slug.indexOf((char)13) > -1)
+ throw new IllegalArgumentException(
+ "The slug must not contain ASCII carriage return or linefeed characters");
+ setHeader("Slug", Escaping.encode(slug,Constants.ASCIISANSCRLF));
}
/**
Modified: incubator/abdera/java/trunk/dependencies/i18n/src/main/java/org/apache/abdera/i18n/iri/Constants.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/dependencies/i18n/src/main/java/org/apache/abdera/i18n/iri/Constants.java?view=diff&rev=541071&r1=541070&r2=541071
==============================================================================
--- incubator/abdera/java/trunk/dependencies/i18n/src/main/java/org/apache/abdera/i18n/iri/Constants.java (original)
+++ incubator/abdera/java/trunk/dependencies/i18n/src/main/java/org/apache/abdera/i18n/iri/Constants.java Wed May 23 13:59:09 2007
@@ -131,5 +131,8 @@
.set2(0x005B,0x0060)
.set2(0x007B,0x007F);
+ public final static BitSet ASCIISANSCRLF = new ChainableBitSet()
+ .set2(1, 127)
+ .clear2(10,13);
}
Modified: incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/AbstractRequest.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/AbstractRequest.java?view=diff&rev=541071&r1=541070&r2=541071
==============================================================================
--- incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/AbstractRequest.java (original)
+++ incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/AbstractRequest.java Wed May 23 13:59:09 2007
@@ -23,6 +23,7 @@
import javax.activation.MimeType;
import javax.activation.MimeTypeParseException;
+import org.apache.abdera.i18n.iri.Escaping;
import org.apache.abdera.protocol.Request;
public abstract class AbstractRequest implements Request {
@@ -57,7 +58,7 @@
}
public String getSlug() {
- return EncodingUtil.decode(getHeader("Slug"));
+ return Escaping.decode(EncodingUtil.decode(getHeader("Slug")));
}
public MimeType getContentType() throws MimeTypeParseException {
Modified: incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/AbstractResponse.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/AbstractResponse.java?view=diff&rev=541071&r1=541070&r2=541071
==============================================================================
--- incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/AbstractResponse.java (original)
+++ incubator/abdera/java/trunk/protocol/src/main/java/org/apache/abdera/protocol/util/AbstractResponse.java Wed May 23 13:59:09 2007
@@ -24,6 +24,7 @@
import org.apache.abdera.protocol.Response;
import org.apache.abdera.util.EntityTag;
+import org.apache.abdera.i18n.iri.Escaping;
import org.apache.abdera.i18n.iri.IRI;
import org.apache.abdera.i18n.iri.IRISyntaxException;
@@ -192,7 +193,7 @@
}
public String getDecodedHeader(String header) {
- return EncodingUtil.decode(getHeader(header));
+ return Escaping.decode(EncodingUtil.decode(getHeader(header)));
}
}
Modified: incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/provider/AbstractResponseContext.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/provider/AbstractResponseContext.java?view=diff&rev=541071&r1=541070&r2=541071
==============================================================================
--- incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/provider/AbstractResponseContext.java (original)
+++ incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/provider/AbstractResponseContext.java Wed May 23 13:59:09 2007
@@ -23,6 +23,8 @@
import java.util.List;
import java.util.Map;
+import org.apache.abdera.i18n.iri.Constants;
+import org.apache.abdera.i18n.iri.Escaping;
import org.apache.abdera.protocol.server.provider.ResponseContext;
import org.apache.abdera.protocol.util.AbstractResponse;
import org.apache.abdera.protocol.util.EncodingUtil;
@@ -213,16 +215,16 @@
setHeader("Content-Location", uri);
}
- public void setSlug(String slug, String charset) {
- setSlug(EncodingUtil.encode(slug, charset));
- }
-
public void setSlug(String slug) {
if (slug == null) {
removeHeader("Slug");
return;
}
- setHeader("Slug", slug);
+ if (slug.indexOf((char)10) > -1 ||
+ slug.indexOf((char)13) > -1)
+ throw new IllegalArgumentException(
+ "The slug must not contain ASCII carriage return or linefeed characters");
+ setHeader("Slug", Escaping.encode(slug, Constants.ASCIISANSCRLF));
}
public void setContentType(String type) {