Browse Source
Use LinkedHashMaps/Sets wherever exposed to users, and code tests defensively in terms of expected Map/Set ordering. Otherwise, there'll be runtime order differences between JDK 7 and JDK 8 due to internal HashMap/Set implementation differences. Issue: SPR-9639pull/263/merge
18 changed files with 145 additions and 195 deletions
@ -1,79 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2012 the original author or authors. |
|
||||||
* |
|
||||||
* 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. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.springframework.web.servlet.view.document; |
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream; |
|
||||||
import java.util.HashMap; |
|
||||||
import java.util.Map; |
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest; |
|
||||||
import javax.servlet.http.HttpServletResponse; |
|
||||||
|
|
||||||
import com.lowagie.text.Document; |
|
||||||
import com.lowagie.text.PageSize; |
|
||||||
import com.lowagie.text.Paragraph; |
|
||||||
import com.lowagie.text.pdf.PdfWriter; |
|
||||||
import junit.framework.TestCase; |
|
||||||
|
|
||||||
import org.springframework.mock.web.test.MockHttpServletRequest; |
|
||||||
import org.springframework.mock.web.test.MockHttpServletResponse; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author Alef Arendsen |
|
||||||
* @author Juergen Hoeller |
|
||||||
*/ |
|
||||||
public class PdfViewTests extends TestCase { |
|
||||||
|
|
||||||
public void testPdf() throws Exception { |
|
||||||
final String text = "this should be in the PDF"; |
|
||||||
MockHttpServletRequest request = new MockHttpServletRequest(); |
|
||||||
MockHttpServletResponse response = new MockHttpServletResponse(); |
|
||||||
|
|
||||||
AbstractPdfView pdfView = new AbstractPdfView() { |
|
||||||
@Override |
|
||||||
protected void buildPdfDocument(Map model, Document document, PdfWriter writer, |
|
||||||
HttpServletRequest request, HttpServletResponse response) throws Exception { |
|
||||||
document.add(new Paragraph(text)); |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
pdfView.render(new HashMap(), request, response); |
|
||||||
byte[] pdfContent = response.getContentAsByteArray(); |
|
||||||
assertEquals("correct response content type", "application/pdf", response.getContentType()); |
|
||||||
assertEquals("correct response content length", pdfContent.length, response.getContentLength()); |
|
||||||
|
|
||||||
// rebuild iText document for comparison
|
|
||||||
Document document = new Document(PageSize.A4); |
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream(); |
|
||||||
PdfWriter writer = PdfWriter.getInstance(document, baos); |
|
||||||
writer.setViewerPreferences(PdfWriter.AllowPrinting | PdfWriter.PageLayoutSinglePage); |
|
||||||
document.open(); |
|
||||||
document.add(new Paragraph(text)); |
|
||||||
document.close(); |
|
||||||
byte[] baosContent = baos.toByteArray(); |
|
||||||
assertEquals("correct size", pdfContent.length, baosContent.length); |
|
||||||
|
|
||||||
int diffCount = 0; |
|
||||||
for (int i = 0; i < pdfContent.length; i++) { |
|
||||||
if (pdfContent[i] != baosContent[i]) { |
|
||||||
diffCount++; |
|
||||||
} |
|
||||||
} |
|
||||||
assertTrue("difference only in encryption", diffCount < 70); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
Loading…
Reference in new issue