You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by me...@apache.org on 2016/08/18 05:38:29 UTC
svn commit: r1756711 - in /jspwiki/trunk: ./
jspwiki-war/src/main/java/org/apache/wiki/
jspwiki-war/src/main/java/org/apache/wiki/ui/
jspwiki-war/src/main/java/org/apache/wiki/util/
jspwiki-war/src/main/resources/ini/ jspwiki-war/src/test/java/org/apac...
Author: metskem
Date: Thu Aug 18 05:38:28 2016
New Revision: 1756711
URL: http://svn.apache.org/viewvc?rev=1756711&view=rev
Log:
2016-08-18 Harry Metske (metskem@apache.org)
* 2.10.3-svn-12
* Fixed JSPWIKI-396 UTF-8 characters in wiki pages incorrectly rendered if served by Weblogic
A rigorous fix by J�rgen Weber, ditched UtilJ2eeCompat, introduced new property "jspwiki.nofilterencoding".
Removed:
jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/util/UtilJ2eeCompat.java
jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/UtilJ2eeCompatTest.java
Modified:
jspwiki/trunk/ChangeLog
jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java
jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/WikiEngine.java
jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java
jspwiki/trunk/jspwiki-war/src/main/resources/ini/jspwiki.properties
jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/AllTests.java
Modified: jspwiki/trunk/ChangeLog
URL: http://svn.apache.org/viewvc/jspwiki/trunk/ChangeLog?rev=1756711&r1=1756710&r2=1756711&view=diff
==============================================================================
--- jspwiki/trunk/ChangeLog (original)
+++ jspwiki/trunk/ChangeLog Thu Aug 18 05:38:28 2016
@@ -1,3 +1,10 @@
+2016-08-18 Harry Metske (metskem@apache.org)
+
+ * 2.10.3-svn-12
+
+ * Fixed JSPWIKI-396 UTF-8 characters in wiki pages incorrectly rendered if served by Weblogic
+ A rigorous fix by Jürgen Weber, ditched UtilJ2eeCompat, introduced new property "jspwiki.nofilterencoding".
+
2016-04-17 Harry Metske (metskem@apache.org)
* 2.10.3-svn-11
Modified: jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java?rev=1756711&r1=1756710&r2=1756711&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java (original)
+++ jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java Thu Aug 18 05:38:28 2016
@@ -72,7 +72,7 @@ public final class Release {
* <p>
* If the build identifier is empty, it is not added.
*/
- public static final String BUILD = "11";
+ public static final String BUILD = "12";
/**
* This is the generic version string you should use when printing out the version. It is of
Modified: jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/WikiEngine.java
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/WikiEngine.java?rev=1756711&r1=1756710&r2=1756711&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/WikiEngine.java (original)
+++ jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/WikiEngine.java Thu Aug 18 05:38:28 2016
@@ -140,6 +140,10 @@ public class WikiEngine
/** Define the used encoding. Currently supported are ISO-8859-1 and UTF-8 */
public static final String PROP_ENCODING = "jspwiki.encoding";
+
+ /** Do not use encoding in WikiJSPFilter, default is false for most servers.
+ Double negative, cause for most servers you don't need the property */
+ public static final String PROP_NO_FILTER_ENCODING = "jspwiki.nofilterencoding";
/** The name for the base URL to use in all references. */
public static final String PROP_BASEURL = "jspwiki.baseURL";
Modified: jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java?rev=1756711&r1=1756710&r2=1756711&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java (original)
+++ jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java Thu Aug 18 05:38:28 2016
@@ -45,7 +45,7 @@ import org.apache.wiki.event.WikiEventMa
import org.apache.wiki.event.WikiPageEvent;
import org.apache.wiki.url.DefaultURLConstructor;
import org.apache.wiki.util.TextUtil;
-import org.apache.wiki.util.UtilJ2eeCompat;
+
/**
* This filter goes through the generated page response prior and
@@ -57,7 +57,7 @@ import org.apache.wiki.util.UtilJ2eeComp
* redirections or sends error codes (such as access control methods).
* <p>
* Inclusion markers are placed by the IncludeResourcesTag; the
- * defult content templates (see .../templates/default/commonheader.jsp)
+ * default content templates (see .../templates/default/commonheader.jsp)
* are configured to do this. As an example, a JavaScript resource marker
* is added like this:
* <pre>
@@ -78,16 +78,18 @@ import org.apache.wiki.util.UtilJ2eeComp
*/
public class WikiJSPFilter extends WikiServletFilter
{
- private Boolean m_useOutputStream;
private String m_wiki_encoding;
+ private boolean useEncoding;
/** {@inheritDoc} */
public void init( FilterConfig config ) throws ServletException
{
super.init( config );
m_wiki_encoding = m_engine.getWikiProperties().getProperty(WikiEngine.PROP_ENCODING);
+
+ useEncoding = !(new Boolean(m_engine.getWikiProperties().getProperty(WikiEngine.PROP_NO_FILTER_ENCODING, "false").trim()).booleanValue());
+
ServletContext context = config.getServletContext();
- m_useOutputStream = UtilJ2eeCompat.useOutputStream( context.getServerInfo() );
}
public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain )
@@ -101,16 +103,7 @@ public class WikiJSPFilter extends WikiS
w.enterState("Filtering for URL "+((HttpServletRequest)request).getRequestURI(), 90 );
HttpServletResponseWrapper responseWrapper;
- if( m_useOutputStream )
- {
- log.debug( "Using ByteArrayResponseWrapper" );
- responseWrapper = new ByteArrayResponseWrapper( (HttpServletResponse)response, m_wiki_encoding );
- }
- else
- {
- log.debug( "Using MyServletResponseWrapper" );
- responseWrapper = new MyServletResponseWrapper( (HttpServletResponse)response, m_wiki_encoding );
- }
+ responseWrapper = new MyServletResponseWrapper( (HttpServletResponse)response, m_wiki_encoding, useEncoding);
// fire PAGE_REQUESTED event
String pagename = DefaultURLConstructor.parsePageFromURL(
@@ -130,7 +123,7 @@ public class WikiJSPFilter extends WikiS
WikiContext wikiContext = getWikiContext( request );
String r = filter( wikiContext, responseWrapper );
- if (m_useOutputStream)
+ if (useEncoding)
{
OutputStreamWriter out = new OutputStreamWriter(response.getOutputStream(),
response.getCharacterEncoding());
@@ -265,99 +258,27 @@ public class WikiJSPFilter extends WikiS
ByteArrayOutputStream m_output;
private MyServletOutputStream m_servletOut;
private PrintWriter m_writer;
-
- public MyServletResponseWrapper( HttpServletResponse r, final String wiki_encoding )
- throws UnsupportedEncodingException {
- super(r);
- m_output = new ByteArrayOutputStream();
- m_servletOut = new MyServletOutputStream(m_output);
- m_writer = new PrintWriter(new OutputStreamWriter(m_servletOut, wiki_encoding), true);
- }
-
- /**
- * Returns a writer for output; this wraps the internal buffer
- * into a PrintWriter.
- */
- public PrintWriter getWriter()
- {
- return m_writer;
- }
-
- public ServletOutputStream getOutputStream()
- {
- return m_servletOut;
- }
-
- public void flushBuffer() throws IOException
- {
- m_writer.flush();
- super.flushBuffer();
- }
-
- class MyServletOutputStream extends ServletOutputStream
- {
- ByteArrayOutputStream m_buffer;
-
- public MyServletOutputStream(ByteArrayOutputStream byteArrayOutputStream)
- {
- super();
- m_buffer = byteArrayOutputStream;
- }
-
- @Override
- public void write(int aInt) throws IOException
- {
- m_buffer.write( aInt );
- }
- }
-
- /**
- * Returns whatever was written so far into the Writer.
- */
- public String toString()
- {
- try
- {
- flushBuffer();
- }
- catch( IOException e )
- {
- log.error( MyServletResponseWrapper.class + " toString() flushBuffer() Failed", e );
- return StringUtils.EMPTY;
- }
-
- return m_output.toString();
- }
- }
-
- /**
- * Response wrapper for application servers which do not work with CharArrayWriter
- * Currently only OC4J
- */
- private static class ByteArrayResponseWrapper
- extends HttpServletResponseWrapper
- {
private HttpServletResponse m_response;
+ private boolean useEncoding;
- private ByteArrayOutputStream m_output;
- private MyServletOutputStream m_servletOut;
- private PrintWriter m_writer;
-
/**
* How large the initial buffer should be. This should be tuned to achieve
* a balance in speed and memory consumption.
*/
- private static final int INIT_BUFFER_SIZE = 4096;
+ private static final int INIT_BUFFER_SIZE = 0x8000;
+
- public ByteArrayResponseWrapper( HttpServletResponse r, final String wiki_encoding )
+ public MyServletResponseWrapper( HttpServletResponse r, final String wiki_encoding, boolean useEncoding)
throws UnsupportedEncodingException {
super(r);
- m_output = new ByteArrayOutputStream( INIT_BUFFER_SIZE );
+ m_output = new ByteArrayOutputStream(INIT_BUFFER_SIZE);
m_servletOut = new MyServletOutputStream(m_output);
m_writer = new PrintWriter(new OutputStreamWriter(m_servletOut, wiki_encoding), true);
+ this.useEncoding = useEncoding;
+
m_response = r;
}
-
+
/**
* Returns a writer for output; this wraps the internal buffer
* into a PrintWriter.
@@ -380,18 +301,18 @@ public class WikiJSPFilter extends WikiS
class MyServletOutputStream extends ServletOutputStream
{
- private OutputStream m_stream;
+ ByteArrayOutputStream m_buffer;
- public MyServletOutputStream( OutputStream aOutput )
+ public MyServletOutputStream(ByteArrayOutputStream byteArrayOutputStream)
{
super();
- m_stream = aOutput;
+ m_buffer = byteArrayOutputStream;
}
@Override
public void write(int aInt) throws IOException
{
- m_stream.write( aInt );
+ m_buffer.write( aInt );
}
}
@@ -401,23 +322,32 @@ public class WikiJSPFilter extends WikiS
public String toString()
{
try
- {
- flushBuffer();
- return m_output.toString( m_response.getCharacterEncoding() );
- }
- catch( UnsupportedEncodingException e )
- {
- log.error( ByteArrayResponseWrapper.class + " Unsupported Encoding", e );
+ {
+ flushBuffer();
+ } catch (IOException e)
+ {
+ log.error( e );
return StringUtils.EMPTY;
- }
- catch( IOException e )
+ }
+
+ try
+ {
+ if (useEncoding)
+ {
+ return m_output.toString(m_response.getCharacterEncoding());
+ }
+
+ return m_output.toString();
+ }
+ catch( UnsupportedEncodingException e )
{
- log.error( ByteArrayResponseWrapper.class + " toString() Flush Failed", e );
+ log.error( e );
return StringUtils.EMPTY;
- }
+ }
}
}
+
// events processing .......................................................
Modified: jspwiki/trunk/jspwiki-war/src/main/resources/ini/jspwiki.properties
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/resources/ini/jspwiki.properties?rev=1756711&r1=1756710&r2=1756711&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/resources/ini/jspwiki.properties (original)
+++ jspwiki/trunk/jspwiki-war/src/main/resources/ini/jspwiki.properties Thu Aug 18 05:38:28 2016
@@ -467,6 +467,12 @@ jspwiki.plugin.externalJars =
# Markup parser class name; it must be a subclass of org.apache.wiki.parser.MarkupParser
jspwiki.renderingManager.markupParser=org.apache.wiki.parser.JSPWikiMarkupParser
+# Response encoding
+#
+# Whether WikiJSPFilter should use encoding for the response.
+# Most servers don't need this settings, but if your non-Latin chars are not displayed
+# properly, try setting this to true.
+# jspwiki.nofilterencoding = false
#############################################################################
#
Modified: jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/AllTests.java
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/AllTests.java?rev=1756711&r1=1756710&r2=1756711&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/AllTests.java (original)
+++ jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/AllTests.java Thu Aug 18 05:38:28 2016
@@ -46,7 +46,6 @@ public class AllTests extends TestCase {
suite.addTest( SerializerTest.suite() );
suite.addTest( TextUtilTest.suite() );
suite.addTest( TimedCounterListTest.suite() );
- suite.addTest( UtilJ2eeCompatTest.suite() );
suite.addTest( XmlUtilTest.suite() );
return suite;