Author: mir
Date: Mon Jan 11 13:15:54 2010
New Revision: 897852

URL: http://svn.apache.org/viewvc?rev=897852&view=rev
Log:
CLEREZZA-39: returns now the difference between the byte remaining in the 
buffer before and after the call.

Modified:
    
incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/main/java/org/apache/clerezza/platform/xhtml2html/DocTypeSettingByteChannel.java
    
incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/main/java/org/apache/clerezza/platform/xhtml2html/WrappedResponse.java
    
incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/test/java/org/apache/clerezza/platform/xhtml2html/DocTypeSettingByteChannelTest.java

Modified: 
incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/main/java/org/apache/clerezza/platform/xhtml2html/DocTypeSettingByteChannel.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/main/java/org/apache/clerezza/platform/xhtml2html/DocTypeSettingByteChannel.java?rev=897852&r1=897851&r2=897852&view=diff
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/main/java/org/apache/clerezza/platform/xhtml2html/DocTypeSettingByteChannel.java
 (original)
+++ 
incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/main/java/org/apache/clerezza/platform/xhtml2html/DocTypeSettingByteChannel.java
 Mon Jan 11 13:15:54 2010
@@ -54,8 +54,7 @@
        @Override
        public int write(ByteBuffer byteBuffer) throws IOException {
                if (!doctypeWritten && wrappedResponse.isHtml()) {
-                       int writtenBytes = byteBuffer.remaining();
-                       System.out.println(writtenBytes);
+                       int initialRemaining = byteBuffer.remaining();
                        while (byteBuffer.remaining() > 0) {
                                byte b = byteBuffer.get();
                                cachedBytes.write(b);
@@ -65,11 +64,10 @@
                                }
                                if (arrayPosition == (DOCTYPE_TAG_BYTES.length 
- 1) &&
                                                
DOCTYPE_TAG_BYTES[arrayPosition] == b) {
-                                       byte[] cachedBytesArray = 
cachedBytes.toByteArray();
-                                       writeToWrappedChannel(cachedBytesArray);
-                                       int rest = 
wrappedByteChannel.write(byteBuffer);
+                                       
writeToWrappedChannel(cachedBytes.toByteArray());
+                                       wrappedByteChannel.write(byteBuffer);
                                        doctypeWritten = true;
-                                       return cachedBytesArray.length + rest;
+                                       break;
                                }
                                if (arrayPosition < XML_DECLARATION_BYTES.length
                                                && 
XML_DECLARATION_BYTES[arrayPosition] != b) {
@@ -86,17 +84,16 @@
                                if (DOCTYPE_TAG_BYTES[arrayPosition] != b || 
isNotADoctypeDef) {
                                        isNotADoctypeDef = true;
                                        if (!isXmlDeclaration) {
-                                               
writeToWrappedChannel(DOCTYPE_DEF_BYTES);
-                                               byte[] cachedBytesArray = 
cachedBytes.toByteArray();
-                                               
writeToWrappedChannel(cachedBytesArray);
-                                               int rest = 
wrappedByteChannel.write(byteBuffer);
+                                               
writeToWrappedChannel(DOCTYPE_DEF_BYTES);                                       
        
+                                               
writeToWrappedChannel(cachedBytes.toByteArray());
+                                               
wrappedByteChannel.write(byteBuffer);
                                                doctypeWritten = true;
-                                               return DOCTYPE_DEF_BYTES.length 
+ cachedBytesArray.length + rest;
+                                               break;
                                        }
                                }
                                arrayPosition++;
                        }
-                       return 0;
+                       return initialRemaining  - byteBuffer.remaining();
                } else {
                        return wrappedByteChannel.write(byteBuffer);
                }

Modified: 
incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/main/java/org/apache/clerezza/platform/xhtml2html/WrappedResponse.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/main/java/org/apache/clerezza/platform/xhtml2html/WrappedResponse.java?rev=897852&r1=897851&r2=897852&view=diff
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/main/java/org/apache/clerezza/platform/xhtml2html/WrappedResponse.java
 (original)
+++ 
incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/main/java/org/apache/clerezza/platform/xhtml2html/WrappedResponse.java
 Mon Jan 11 13:15:54 2010
@@ -41,9 +41,13 @@
 
        @Override
        public void addHeader(HeaderName headerName, Object value) throws 
HandlerException {
+               if (headerName.equals(HeaderName.CONTENT_LENGTH) && isHtml) {
+                       return;
+               }
                if (headerName.equals(HeaderName.CONTENT_TYPE) && 
XHTML_TYPE.equals(value)) {
                        super.addHeader(headerName, HTML_TYPE);
                        isHtml = true;
+                       super.setHeader(HeaderName.CONTENT_LENGTH, null);
                } else {
                        super.addHeader(headerName, value);
                }
@@ -51,9 +55,13 @@
 
        @Override
        public void setHeader(HeaderName headerName, Object value) throws 
HandlerException {
+               if (headerName.equals(HeaderName.CONTENT_LENGTH) && isHtml) {
+                       return;
+               }
                if (headerName.equals(HeaderName.CONTENT_TYPE) && 
XHTML_TYPE.equals(value)) {
                        super.setHeader(headerName, HTML_TYPE);
                        isHtml = true;
+                       super.setHeader(HeaderName.CONTENT_LENGTH, null);
                } else {
                        super.setHeader(headerName, value);
                }

Modified: 
incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/test/java/org/apache/clerezza/platform/xhtml2html/DocTypeSettingByteChannelTest.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/test/java/org/apache/clerezza/platform/xhtml2html/DocTypeSettingByteChannelTest.java?rev=897852&r1=897851&r2=897852&view=diff
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/test/java/org/apache/clerezza/platform/xhtml2html/DocTypeSettingByteChannelTest.java
 (original)
+++ 
incubator/clerezza/issues/CLEREZZA-39/org.apache.clerezza.platform.xhtml2html/src/test/java/org/apache/clerezza/platform/xhtml2html/DocTypeSettingByteChannelTest.java
 Mon Jan 11 13:15:54 2010
@@ -71,13 +71,12 @@
                        public boolean isHtml() {
                                return true;
                        }
-
                });
                int bytesWritten = 
channel.write(ByteBuffer.wrap(someHtml.substring(0, 20).getBytes(UTF8)));
                bytesWritten += 
channel.write(ByteBuffer.wrap(someHtml.substring(20).getBytes(UTF8)));
                final String resultString = new String(baos.toByteArray(), 
UTF8);
                System.out.println(resultString);
-               Assert.assertEquals(resultString.length(), bytesWritten);
+               Assert.assertEquals(someHtml.length(), bytesWritten);
                Assert.assertTrue(resultString.contains("<!DOCTYPE"));
                /* The test fails iff the ?xml is at another position than 0, 
not
                 * if its removed*/
@@ -103,7 +102,6 @@
                        public boolean isHtml() {
                                return true;
                        }
-
                });
                channel.write(ByteBuffer.wrap(someHtml.getBytes(UTF8)));
                final String resultString = new String(baos.toByteArray(), 
UTF8);


Reply via email to