Author: craigmcc
Date: Sat Dec 31 13:34:57 2005
New Revision: 360451

URL: http://svn.apache.org/viewcvs?rev=360451&view=rev
Log:
Make MockRenderKit.createResponseWriter() functional.

Added:
    
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockResponseWriter.java
   (with props)
Modified:
    
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockRenderKit.java

Modified: 
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockRenderKit.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockRenderKit.java?rev=360451&r1=360450&r2=360451&view=diff
==============================================================================
--- 
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockRenderKit.java
 (original)
+++ 
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockRenderKit.java
 Sat Dec 31 13:34:57 2005
@@ -84,7 +84,7 @@
                                               String contentTypeList,
                                               String characterEncoding) {
 
-       throw new UnsupportedOperationException();
+       return new MockResponseWriter(writer, contentTypeList, 
characterEncoding);
 
     }
 

Added: 
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockResponseWriter.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockResponseWriter.java?rev=360451&view=auto
==============================================================================
--- 
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockResponseWriter.java
 (added)
+++ 
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockResponseWriter.java
 Sat Dec 31 13:34:57 2005
@@ -0,0 +1,319 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ * 
+ * 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.apache.shale.test.mock;
+
+import java.io.IOException;
+import java.io.Writer;
+import javax.faces.component.UIComponent;
+import javax.faces.context.ResponseWriter;
+
+/**
+ * <p>Mock implementation of <code>javax.faces.context.ResponseWriter.</p>
+ */
+public class MockResponseWriter extends ResponseWriter {
+    
+
+    // ------------------------------------------------------------ 
Constructors
+
+
+    public MockResponseWriter(Writer writer, String contentType, String 
characterEncoding) {
+        this.writer = writer;
+        this.contentType = contentType;
+        this.characterEncoding = characterEncoding;
+    }
+
+
+    // ------------------------------------------------------ Instance 
Variables
+
+
+    private String characterEncoding = null;
+    private String contentType = "text/html";
+    private boolean open = false; // Is an element currently open?
+    private Writer writer = null;
+
+
+    // ----------------------------------------------------- Mock Object 
Methods
+
+
+
+    // -------------------------------------------------- ResponseWriter 
Methods
+
+
+    public ResponseWriter cloneWithWriter(Writer writer) {
+        return new MockResponseWriter(writer, contentType, characterEncoding);
+    }
+
+
+    public void endDocument() throws IOException {
+        finish();
+        writer.flush();
+    }
+
+
+    public void endElement(String name) throws IOException {
+        if (open) {
+            writer.write("/");
+            finish();
+        } else {
+            writer.write("</");
+            writer.write(name);
+            writer.write(">");
+        }
+    }
+
+
+    public String getCharacterEncoding() {
+        return this.characterEncoding;
+    }
+
+
+    public String getContentType() {
+        return this.contentType;
+    }
+
+
+    public void flush() throws IOException {
+        finish();
+    }
+
+
+    public void startDocument() throws IOException {
+        ; // Do nothing
+    }
+
+
+    public void startElement(String name, UIComponent component) throws 
IOException {
+        if (name == null) {
+            throw new NullPointerException();
+        }
+        finish();
+        writer.write('<');
+        writer.write(name);
+        open = true;
+    }
+
+
+    public void writeAttribute(String name, Object value, String property) 
throws IOException {
+        if ((name == null) || (value == null)) {
+            throw new NullPointerException();
+        }
+        if (!open) {
+            throw new IllegalStateException();
+        }
+        writer.write(" ");
+        writer.write(name);
+        writer.write("=\"");
+        if (value instanceof String) {
+            string((String) value);
+        } else {
+            string(value.toString());
+        }
+        writer.write("\"");
+    }
+
+
+    public void writeComment(Object comment) throws IOException {
+        if (comment == null) {
+            throw new NullPointerException();
+        }
+        finish();
+        writer.write("<!-- ");
+        if (comment instanceof String) {
+            writer.write((String) comment);
+        } else {
+            writer.write(comment.toString());
+        }
+        writer.write(" -->");
+    }
+
+
+    public void writeText(Object text, String property) throws IOException {
+        if (text == null) {
+            throw new NullPointerException();
+        }
+        finish();
+        if (text instanceof String) {
+            string((String) text);
+        } else {
+            string(text.toString());
+        }
+    }
+
+
+    public void writeText(char text[], int off, int len) throws IOException {
+        if (text == null) {
+            throw new NullPointerException();
+        }
+        if ((off < 0) || (off > text.length) || (len < 0) || (len > 
text.length)) {
+            throw new IndexOutOfBoundsException();
+        }
+        finish();
+        string(text, off, len);
+    }
+
+
+    public void writeURIAttribute(String name, Object value, String property) 
throws IOException {
+        if ((name == null) || (value == null)) {
+            throw new NullPointerException();
+        }
+        if (!open) {
+            throw new IllegalStateException();
+        }
+        writer.write(" ");
+        writer.write(name);
+        writer.write("=\"");
+        if (value instanceof String) {
+            string((String) value);
+        } else {
+            string(value.toString());
+        }
+        writer.write("\"");
+    }
+
+
+    // ---------------------------------------------------------- Writer 
Methods
+
+
+    public void close() throws IOException {
+        finish();
+        writer.close();
+    }
+
+
+    public void write(char cbuf[], int off, int len) throws IOException {
+        finish();
+        writer.write(cbuf, off, len);
+    }
+
+
+    // --------------------------------------------------------- Support 
Methods
+
+
+    /**
+     * <p>Write the specified character, filtering if necessary.</p>
+     *
+     * @param ch Character to be written
+     */
+    private void character(char ch) throws IOException {
+
+        if (ch <= 0xff) {
+            // In single byte characters, replace only the five
+            // characters for which well-known entities exist in XML
+            if (ch == 0x22) {
+                writer.write("&quot;");
+            } else if (ch == 0x26) {
+                writer.write("&amp;");
+            } else if (ch == 0x27) {
+                writer.write("&apos;");
+            } else if (ch == 0x3C) {
+                writer.write("&lt;");
+            } else if (ch == 0X3E) {
+                writer.write("&gt;");
+            } else {
+                writer.write(ch);
+            }
+        } else {
+            if (substitution()) {
+                numeric(writer, ch);
+            } else {
+                writer.write(ch);
+            }
+        }
+
+    }
+
+
+    /**
+     * <p>Close any element that is currently open.</p>
+     *
+     * @exception IOException if an input/output error occurs
+     */
+    private void finish() throws IOException {
+
+        if (open) {
+            writer.write(">");
+            open = false;
+        }
+
+    }
+
+
+    /**
+     * <p>Write a numeric character reference for specified character
+     * to the specfied writer.</p>
+     *
+     * @param writer Writer we are writing to
+     * @param ch Character to be translated and appended
+     */
+    private void numeric(Writer writer, char ch) throws IOException {
+
+        writer.write("&#");
+        writer.write(String.valueOf(ch));
+        writer.write(";");
+
+    }
+
+
+    /**
+     * <p>Write the specified characters (after performing suitable
+     * replacement of characters by corresponding entities).</p>
+     *
+     * @param text Character array containing text to be written
+     * @param off Starting offset (zero relative)
+     * @param len Number of characters to be written
+     */
+    private void string(char text[], int off, int len) throws IOException {
+
+        // Process the specified characters
+        for (int i = off; i < (off + len); i++) {
+            character(text[i]);
+        }
+
+    }
+
+
+    /**
+     * <p>Write the specified string (after performing suitable
+     * replacement of characters by corresponding entities).</p>
+     *
+     * @param s String to be filtered and written
+     */
+    private void string(String s) throws IOException {
+
+        for (int i = 0; i < s.length(); i++) {
+            character(s.charAt(i));
+        }
+
+    }
+
+
+    /**
+     * <p>Return true if entity substitution should be performed on double
+     * byte character values.</p>
+     */
+    private boolean substitution() {
+
+        if ("UTF-8".equals(characterEncoding) || 
"UTF-16".equals(characterEncoding)) {
+            return false;
+        } else {
+            return true;
+        }
+
+    }
+
+
+}

Propchange: 
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockResponseWriter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockResponseWriter.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to