From ad6a00fdf05fe8fbf6c7a55be423dacf220e37a7 Mon Sep 17 00:00:00 2001 From: Maxime Sinclair Date: Mon, 14 Nov 2011 17:22:16 +0100 Subject: [PATCH] Normalization of the format for the proxy feature. New syntax is : plantuml/proxy/[id/][format/]remoteURL where id is a number identifying the diagram definition when the remote URL contains more than one diagram, and format specify the output : img, txt or svg. --- .../plantuml/servlet/PlantUmlServlet.java | 26 ++++++++++++++----- .../plantuml/servlet/TestProxy.java | 15 +++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/sourceforge/plantuml/servlet/PlantUmlServlet.java b/src/main/java/net/sourceforge/plantuml/servlet/PlantUmlServlet.java index 41acc22..c5cae5f 100644 --- a/src/main/java/net/sourceforge/plantuml/servlet/PlantUmlServlet.java +++ b/src/main/java/net/sourceforge/plantuml/servlet/PlantUmlServlet.java @@ -52,6 +52,9 @@ import HTTPClient.ParseException; * Original idea from Achim Abeling for Confluence macro * See http://www.banapple.de/display/BANAPPLE/plantuml+user+macro * + * This class is the old all-in-one historic implementation of the PlantUml server. + * See package.html for the new design. It's a work in progress. + * * Modified by Arnaud Roques * Modified by Pablo Lalloni * Packaged by Maxime Sinclair @@ -164,14 +167,23 @@ public class PlantUmlServlet extends HttpServlet { String source, String format, String uri) throws IOException { SourceStringReader reader = new SourceStringReader( getContent(source)); int n = num == null ? 0 : Integer.parseInt(num); - // Write the requested image to "os" - if (format != null) { - reader.generateImage(response.getOutputStream(), n, new FileFormatOption(FileFormat.valueOf(format))); - } else { - reader.generateImage(response.getOutputStream(), n); - } + + reader.generateImage(response.getOutputStream(), n, getFormat(format)); } - + + private FileFormatOption getFormat(String f) { + if (f==null) { + return new FileFormatOption(FileFormat.PNG); + } + if (f.equals("svg")) { + return new FileFormatOption(FileFormat.SVG); + } + if (f.equals("txt")) { + return new FileFormatOption(FileFormat.ATXT); + } + return new FileFormatOption(FileFormat.PNG); + } + private void sendImage(HttpServletResponse response, String text, String uri) throws IOException { final String uml; diff --git a/src/test/java/net/sourceforge/plantuml/servlet/TestProxy.java b/src/test/java/net/sourceforge/plantuml/servlet/TestProxy.java index 2542589..eeaa2b1 100644 --- a/src/test/java/net/sourceforge/plantuml/servlet/TestProxy.java +++ b/src/test/java/net/sourceforge/plantuml/servlet/TestProxy.java @@ -37,6 +37,21 @@ public class TestProxy extends WebappTestCase { assertTrue( diagramLen < 1700); } + public void testProxyWithFormat() throws Exception { + WebConversation conversation = new WebConversation(); + WebRequest request = new GetMethodWebRequest(getServerUrl() + "proxy/svg/" + + getServerUrl() + "welcome"); + WebResponse response = conversation.getResource( request); + // Analyze response + // Verifies the Content-Type header + // TODO assertEquals( "Response content type is not SVG", "image/svg+xml", response.getContentType()); + // Get the content and verify its size + String diagram = response.getText(); + int diagramLen = diagram.length(); + assertTrue( diagramLen > 1700); + assertTrue( diagramLen < 1800); + } + /** * Verifies that the HTTP header of a diagram incites the browser to cache it. */