[Bug 56952] Move JasperInitializer into separate jar

2014-09-13 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=56952

--- Comment #2 from Jan Bartel  ---
Hi Mark,

I can totally understand that - I'm against jar proliferation in jetty too :).
In fact, we created a feature for Jetty to define a pattern for SCIs to ignore
for just this purpose. Just thought it might be good to separate the SCI from
the jasper impl jar in case there's other use cases where there's no
opportunity to implement an ignore pattern ...

Jan

-- 
You are receiving this mail because:
You are the assignee for the bug.

-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



svn commit: r1624760 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/tomcat/websocket/LocalStrings.properties java/org/apache/tomcat/websocket/Util.java test/org/apache/tomcat/websocket/TestUtil.java

2014-09-13 Thread violetagg
Author: violetagg
Date: Sat Sep 13 16:08:30 2014
New Revision: 1624760

URL: http://svn.apache.org/r1624760
Log:
Merged revisions 1604781, 1604788 from tomcat/trunk:
- Add support for parsing the extension header
- Strengthen WebSocket extension parameter validation

Modified:
tomcat/tc7.0.x/trunk/   (props changed)

tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/Util.java
tomcat/tc7.0.x/trunk/test/org/apache/tomcat/websocket/TestUtil.java

Propchange: tomcat/tc7.0.x/trunk/
--
  Merged /tomcat/trunk:r1604781,1604788

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties?rev=1624760&r1=1624759&r2=1624760&view=diff
==
--- 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties 
Sat Sep 13 16:08:30 2014
@@ -28,6 +28,7 @@ asyncChannelWrapperSecure.wrongStateWrit
 
 backgroundProcessManager.processFailed=A background process failed
 
+util.notToken=An illegal extension parameter was specified with name [{0}] and 
value [{1}]
 util.invalidMessageHandler=The message handler provided does not have an 
onMessage(Object) method
 util.invalidType=Unable to coerce value [{0}] to type [{1}]. That type is not 
supported.
 util.unknownDecoderType=The Decoder type [{0}] is not recognized

Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/Util.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/Util.java?rev=1624760&r1=1624759&r2=1624760&view=diff
==
--- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/Util.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/Util.java Sat Sep 13 
16:08:30 2014
@@ -43,6 +43,7 @@ import javax.websocket.Decoder.TextStrea
 import javax.websocket.DeploymentException;
 import javax.websocket.Encoder;
 import javax.websocket.EndpointConfig;
+import javax.websocket.Extension;
 import javax.websocket.MessageHandler;
 import javax.websocket.PongMessage;
 import javax.websocket.Session;
@@ -352,7 +353,6 @@ public class Util {
 }
 
 
-
 public static Set getMessageHandlers(
 MessageHandler listener, EndpointConfig endpointConfig,
 Session session) {
@@ -448,6 +448,85 @@ public class Util {
 }
 
 
+public static void parseExtensionHeader(List extensions,
+String header) {
+// The relevant ABNF for the Sec-WebSocket-Extensions is as follows:
+//  extension-list = 1#extension
+//  extension = extension-token *( ";" extension-param )
+//  extension-token = registered-token
+//  registered-token = token
+//  extension-param = token [ "=" (token | quoted-string) ]
+// ; When using the quoted-string syntax variant, the value
+// ; after quoted-string unescaping MUST conform to the
+// ; 'token' ABNF.
+//
+// The limiting of parameter values to tokens or "quoted tokens" makes
+// the parsing of the header significantly simpler and allows a number
+// of short-cuts to be taken.
+
+// Step one, split the header into individual extensions using ',' as a
+// separator
+String unparsedExtensions[] = header.split(",");
+for (String unparsedExtension : unparsedExtensions) {
+// Step two, split the extension into the registered name and
+// parameter/value pairs using ';' as a separator
+String unparsedParameters[] = unparsedExtension.split(";");
+WsExtension extension = new 
WsExtension(unparsedParameters[0].trim());
+
+for (int i = 1; i < unparsedParameters.length; i++) {
+int equalsPos = unparsedParameters[i].indexOf('=');
+String name;
+String value;
+if (equalsPos == -1) {
+name = unparsedParameters[i].trim();
+value = null;
+} else {
+name = unparsedParameters[i].substring(0, 
equalsPos).trim();
+value = unparsedParameters[i].substring(equalsPos + 
1).trim();
+int len = value.length();
+if (len > 1) {
+if (value.charAt(0) == '\"' && value.charAt(len - 1) 
== '\"') {
+value = value.substring(1, value.length() - 1);
+}
+}
+}
+//

svn commit: r1624761 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/tomcat/websocket/Transformation.java java/org/apache/tomcat/websocket/WsFrameBase.java

2014-09-13 Thread violetagg
Author: violetagg
Date: Sat Sep 13 16:18:56 2014
New Revision: 1624761

URL: http://svn.apache.org/r1624761
Log:
Merged revisions 1604776, 1604818 from tomcat/trunk:
- Add an interface for the transformation (by an extension) of WebSocket 
frames. Only supports transformation of incoming messages at this point.
- Add some inner classes that will be required when Transformation / extension 
support is plumbed in.

Added:
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/Transformation.java
  - copied unchanged from r1604776, 
tomcat/trunk/java/org/apache/tomcat/websocket/Transformation.java
Modified:
tomcat/tc7.0.x/trunk/   (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java

Propchange: tomcat/tc7.0.x/trunk/
--
  Merged /tomcat/trunk:r1604776,1604818

Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java?rev=1624761&r1=1624760&r2=1624761&view=diff
==
--- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java Sat 
Sep 13 16:18:56 2014
@@ -25,6 +25,7 @@ import java.nio.charset.CodingErrorActio
 
 import javax.websocket.CloseReason;
 import javax.websocket.CloseReason.CloseCodes;
+import javax.websocket.Extension;
 import javax.websocket.MessageHandler;
 import javax.websocket.PongMessage;
 
@@ -698,4 +699,86 @@ public abstract class WsFrameBase {
 private static enum State {
 NEW_FRAME, PARTIAL_HEADER, DATA
 }
+
+
+private abstract class TerminalTransformation implements Transformation {
+
+@Override
+public boolean validateRsvBits(int i) {
+// Terminal transformations don't use RSV bits and there is no next
+// transformation so always return true.
+return true;
+}
+
+@Override
+public Extension getExtensionResponse() {
+// Return null since terminal transformations are not extensions
+return null;
+}
+
+@Override
+public void setNext(Transformation t) {
+// NO-OP since this is the terminal transformation
+}
+
+/**
+ * {@inheritDoc}
+ * 
+ * Anything other than a value of zero for rsv is invalid.
+ */
+@Override
+public boolean validateRsv(int rsv, byte opCode) {
+return rsv == 0;
+}
+}
+
+
+/**
+ * For use by the client implementation that needs to obtain payload data
+ * without the need for unmasking.
+ */
+private final class NoopTransformation extends TerminalTransformation {
+
+@Override
+public boolean getMoreData(byte opCode, int rsv, ByteBuffer dest) {
+// opCode is ignored as the transformation is the same for all
+// opCodes
+// rsv is ignored as it known to be zero at this point
+long toWrite = Math.min(
+payloadLength - payloadWritten, writePos - readPos);
+toWrite = Math.min(toWrite, dest.remaining());
+
+dest.put(inputBuffer, readPos, (int) toWrite);
+readPos += toWrite;
+payloadWritten += toWrite;
+return (payloadWritten == payloadLength);
+}
+}
+
+
+/**
+ * For use by the server implementation that needs to obtain payload data
+ * and unmask it before any further processing.
+ */
+private final class UnmaskTransformation extends TerminalTransformation {
+
+@Override
+public boolean getMoreData(byte opCode, int rsv, ByteBuffer dest) {
+// opCode is ignored as the transformation is the same for all
+// opCodes
+// rsv is ignored as it known to be zero at this point
+while (payloadWritten < payloadLength && readPos < writePos &&
+dest.hasRemaining()) {
+byte b = (byte) ((inputBuffer[readPos] ^ mask[maskIndex]) & 
0xFF);
+maskIndex++;
+if (maskIndex == 4) {
+maskIndex = 0;
+}
+readPos++;
+payloadWritten++;
+dest.put(b);
+}
+return (payloadWritten == payloadLength);
+}
+}
 }



-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org