You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/04/17 19:56:29 UTC
svn commit: r766101 - in /cxf/trunk:
rt/core/src/main/java/org/apache/cxf/attachment/
rt/core/src/test/java/org/apache/cxf/attachment/
systests/src/test/java/org/apache/cxf/systest/provider/
Author: dkulp
Date: Fri Apr 17 17:56:29 2009
New Revision: 766101
URL: http://svn.apache.org/viewvc?rev=766101&view=rev
Log:
CHange boundary to be a uuid
Modified:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentDeserializer.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentSerializer.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentUtil.java
cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java
cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/AttachmentProviderXMLClientServerTest.java
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentDeserializer.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentDeserializer.java?rev=766101&r1=766100&r2=766101&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentDeserializer.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentDeserializer.java Fri Apr 17 17:56:29 2009
@@ -52,7 +52,7 @@
// TODO: Is there a better way to detect boundaries in the message content?
// It seems constricting to assume the boundary will start with ----=_Part_
private static final Pattern INPUT_STREAM_BOUNDARY_PATTERN =
- Pattern.compile("^--(----=_Part_\\S*)", Pattern.MULTILINE);
+ Pattern.compile("^--(\\S*)");
private boolean lazyLoading = true;
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentSerializer.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentSerializer.java?rev=766101&r1=766100&r2=766101&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentSerializer.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentSerializer.java Fri Apr 17 17:56:29 2009
@@ -48,8 +48,8 @@
*/
public void writeProlog() throws IOException {
// Create boundary for body
- bodyBoundary = AttachmentUtil.getUniqueBoundaryValue(0);
-
+ bodyBoundary = AttachmentUtil.getUniqueBoundaryValue();
+
String bodyCt = (String) message.get(Message.CONTENT_TYPE);
bodyCt = bodyCt.replaceAll("\"", "\\\"");
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentUtil.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentUtil.java?rev=766101&r1=766100&r2=766101&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentUtil.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/attachment/AttachmentUtil.java Fri Apr 17 17:56:29 2009
@@ -32,6 +32,7 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Random;
import java.util.UUID;
import javax.activation.DataHandler;
@@ -46,6 +47,8 @@
private static volatile int counter;
private static final String ATT_UUID = UUID.randomUUID().toString();
+ private static final Random BOUND_RANDOM = new Random();
+
private AttachmentUtil() {
}
@@ -73,12 +76,27 @@
return URLEncoder.encode(name, "UTF-8") + "@" + URLEncoder.encode(cid, "UTF-8");
}
- public static String getUniqueBoundaryValue(int part) {
- StringBuffer s = new StringBuffer();
- // Unique string is ----=_Part_<part>_<hashcode>.<currentTime>
- s.append("----=_Part_").append(part++).append("_").append(s.hashCode()).append('.').append(
- System.currentTimeMillis());
- return s.toString();
+ public static String getUniqueBoundaryValue() {
+ //generate a random UUID.
+ //we don't need the cryptographically secure random uuid that
+ //UUID.randomUUID() will produce. Thus, use a faster
+ //pseudo-random thing
+ long leastSigBits = 0;
+ long mostSigBits = 0;
+ synchronized (BOUND_RANDOM) {
+ mostSigBits = BOUND_RANDOM.nextLong();
+ leastSigBits = BOUND_RANDOM.nextLong();
+ }
+
+ mostSigBits &= 0xFFFFFFFFFFFF0FFFL; //clear version
+ mostSigBits |= 0x0000000000004000L; //set version
+
+ leastSigBits &= 0x3FFFFFFFFFFFFFFFL; //clear the variant
+ leastSigBits |= 0x8000000000000000L; //set to IETF variant
+
+ UUID result = new UUID(mostSigBits, leastSigBits);
+
+ return "uuid:" + result.toString();
}
public static String getAttchmentPartHeader(Attachment att) {
@@ -88,7 +106,11 @@
if (att.isXOP()) {
buffer.append("Content-Transfer-Encoding: binary\r\n");
}
- buffer.append("Content-ID: <" + att.getId() + ">\r\n\r\n");
+ String id = att.getId();
+ if (id.charAt(0) == '<') {
+ id = id.substring(1, id.length() - 1);
+ }
+ buffer.append("Content-ID: <" + id + ">\r\n\r\n");
return buffer.toString();
}
Modified: cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java?rev=766101&r1=766100&r2=766101&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java (original)
+++ cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java Fri Apr 17 17:56:29 2009
@@ -240,6 +240,8 @@
assertTrue(attIs.read() == 'a');
assertTrue(attIs.read() == 'r');
assertTrue(attIs.read() == -1);
+
+ assertFalse(itr.hasNext());
}
@Test
Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/AttachmentProviderXMLClientServerTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/AttachmentProviderXMLClientServerTest.java?rev=766101&r1=766100&r2=766101&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/AttachmentProviderXMLClientServerTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/AttachmentProviderXMLClientServerTest.java Fri Apr 17 17:56:29 2009
@@ -64,8 +64,8 @@
assertTrue("wrong content type", connection.getContentType().contains("multipart/related"));
String input = IOUtils.toString(connection.getInputStream());
- int idx = input.indexOf("-----");
- int idx2 = input.indexOf("-----", idx + 5);
+ int idx = input.indexOf("--uuid");
+ int idx2 = input.indexOf("--uuid", idx + 5);
String root = input.substring(idx, idx2);
idx = root.indexOf("\r\n\r\n");
root = root.substring(idx).trim();