You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rd...@apache.org on 2008/12/07 18:31:55 UTC
svn commit: r724161 - in /james/jsieve/trunk/main/src:
main/java/org/apache/jsieve/ main/jjtree/sieve/
test/java/org/apache/jsieve/ test/java/org/apache/jsieve/utils/
Author: rdonkin
Date: Sun Dec 7 09:31:54 2008
New Revision: 724161
URL: http://svn.apache.org/viewvc?rev=724161&view=rev
Log:
https://issues.apache.org/jira/browse/JSIEVE-42 SieveNode.getValue() should escape value JSIEVE-42.
Modified:
james/jsieve/trunk/main/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java
james/jsieve/trunk/main/src/main/java/org/apache/jsieve/SieveValidationVisitor.java
james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt
james/jsieve/trunk/main/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java
james/jsieve/trunk/main/src/test/java/org/apache/jsieve/utils/JUnitUtils.java
Modified: james/jsieve/trunk/main/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java
URL: http://svn.apache.org/viewvc/james/jsieve/trunk/main/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java?rev=724161&r1=724160&r2=724161&view=diff
==============================================================================
--- james/jsieve/trunk/main/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java (original)
+++ james/jsieve/trunk/main/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java Sun Dec 7 09:31:54 2008
@@ -222,20 +222,8 @@
public Object visit(ASTstring node, Object data) {
// Strings are always surround by double-quotes
final String value = (String) node.getValue();
- final StringBuffer buffer = new StringBuffer(value);
- buffer.deleteCharAt(value.length() - 1);
- buffer.deleteCharAt(0);
- int i = 0;
- while (i < buffer.length()) {
- if ('\\' == buffer.charAt(i)) {
- buffer.deleteCharAt(i);
- }
- i++;
- }
-
- final String result = buffer.toString();
// A String is terminal, add it
- ((List) data).add(result);
+ ((List) data).add(value);
return data;
}
Modified: james/jsieve/trunk/main/src/main/java/org/apache/jsieve/SieveValidationVisitor.java
URL: http://svn.apache.org/viewvc/james/jsieve/trunk/main/src/main/java/org/apache/jsieve/SieveValidationVisitor.java?rev=724161&r1=724160&r2=724161&view=diff
==============================================================================
--- james/jsieve/trunk/main/src/main/java/org/apache/jsieve/SieveValidationVisitor.java (original)
+++ james/jsieve/trunk/main/src/main/java/org/apache/jsieve/SieveValidationVisitor.java Sun Dec 7 09:31:54 2008
@@ -119,9 +119,7 @@
if (isInRequire) {
final Object value = node.getValue();
if (value != null && value instanceof String) {
- final String quotedName = (String) value;
- final String name = quotedName.substring(1,
- quotedName.length() - 1);
+ final String name = (String) value;
try {
commandManager.getCommand(name);
} catch (LookupException e) {
Modified: james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt
URL: http://svn.apache.org/viewvc/james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt?rev=724161&r1=724160&r2=724161&view=diff
==============================================================================
--- james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt (original)
+++ james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt Sun Dec 7 09:31:54 2008
@@ -255,10 +255,27 @@
{
(quoted_string = <QUOTED_STRING> | multi_line = <MULTI_LINE>)
{
+ final String stringValue;
if (null != quoted_string)
- jjtThis.setValue(quoted_string.image);
+ stringValue = quoted_string.image;
else if (null != multi_line)
- jjtThis.setValue(multi_line.image);
+ stringValue=multi_line.image;
+ else
+ stringValue=null;
+ if (stringValue != null) {
+ // Unescape and unquote
+ final StringBuffer buffer = new StringBuffer(stringValue);
+ buffer.deleteCharAt(stringValue.length() - 1);
+ buffer.deleteCharAt(0);
+ int i = 0;
+ while (i < buffer.length()) {
+ if ('\\' == buffer.charAt(i)) {
+ buffer.deleteCharAt(i);
+ }
+ i++;
+ }
+ jjtThis.setValue(buffer.toString());
+ }
}
}
Modified: james/jsieve/trunk/main/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java
URL: http://svn.apache.org/viewvc/james/jsieve/trunk/main/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java?rev=724161&r1=724160&r2=724161&view=diff
==============================================================================
--- james/jsieve/trunk/main/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java (original)
+++ james/jsieve/trunk/main/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java Sun Dec 7 09:31:54 2008
@@ -26,9 +26,12 @@
import org.apache.commons.logging.LogFactory;
import org.apache.jsieve.parser.generated.ASTstring;
+import org.apache.jsieve.parser.generated.Node;
+import org.apache.jsieve.utils.JUnitUtils;
public class SieveParserVisitorImplQuoteTest extends TestCase {
+
SieveParserVisitorImpl visitor;
List data;
@@ -44,56 +47,60 @@
.getTestManager(), LogFactory
.getLog(SieveParserVisitorImplQuoteTest.class)));
data = new ArrayList();
- node = new ASTstring(100);
- }
- public void testVisitASTstringObjectQuoted() {
+ }
- node.setValue("\"value\"");
+ private ASTstring stringNode(String value) throws Exception {
+ Node node = JUnitUtils.parse("fileinto " + value + ";");
+ return (ASTstring) node.jjtGetChild(0).jjtGetChild(0).jjtGetChild(0).jjtGetChild(0).jjtGetChild(0).jjtGetChild(0);
+ }
+
+ public void testVisitASTstringObjectQuoted() throws Exception {
+ node = stringNode("\"value\"");
visitor.visit(node, data);
assertEquals("Data value added after quotes stripped", 1, data.size());
assertEquals("Data value added after quotes stripped", "value", data
.get(0));
}
- public void testVisitASTstringObjectQuoteInQuoted() {
-
- node.setValue("\"val\\\"ue\"");
+ public void testVisitASTstringObjectQuoteInQuoted() throws Exception {
+
+ node = stringNode("\"val\\\"ue\"");
visitor.visit(node, data);
assertEquals("Data value added after quotes stripped", 1, data.size());
assertEquals("Data value added after quotes stripped", "val\"ue", data
.get(0));
}
- public void testVisitASTstringObjectDoubleSlashQuoted() {
+ public void testVisitASTstringObjectDoubleSlashQuoted() throws Exception {
- node.setValue("\"val\\\\ue\"");
+ node = stringNode("\"val\\\\ue\"");
visitor.visit(node, data);
assertEquals("Data value added after quotes stripped", 1, data.size());
assertEquals("Data value added after quotes stripped", "val\\ue", data
.get(0));
}
- public void testVisitASTstringObjectSlashQuoted() {
+ public void testVisitASTstringObjectSlashQuoted() throws Exception {
- node.setValue("\"val\\ue\"");
+ node = stringNode("\"value\"");
visitor.visit(node, data);
assertEquals("Data value added after quotes stripped", 1, data.size());
assertEquals("Data value added after quotes stripped", "value", data
.get(0));
}
- public void testVisitASTstringEmptyQuoted() {
+ public void testVisitASTstringEmptyQuoted() throws Exception {
- node.setValue("\"\"");
+ node = stringNode("\"\"");
visitor.visit(node, data);
assertEquals("Data value added after quotes stripped", 1, data.size());
assertEquals("Data value added after quotes stripped", "", data.get(0));
}
- public void testVisitASTstringObjectMultiSlashQuoted() {
+ public void testVisitASTstringObjectMultiSlashQuoted() throws Exception {
- node.setValue("\"v\\\\al\\\\u\\e\\\\\"");
+ node = stringNode("\"v\\\\al\\\\u\\e\\\\\"");
visitor.visit(node, data);
assertEquals("Data value added after quotes stripped", 1, data.size());
assertEquals("Data value added after quotes stripped", "v\\al\\ue\\",
Modified: james/jsieve/trunk/main/src/test/java/org/apache/jsieve/utils/JUnitUtils.java
URL: http://svn.apache.org/viewvc/james/jsieve/trunk/main/src/test/java/org/apache/jsieve/utils/JUnitUtils.java?rev=724161&r1=724160&r2=724161&view=diff
==============================================================================
--- james/jsieve/trunk/main/src/test/java/org/apache/jsieve/utils/JUnitUtils.java (original)
+++ james/jsieve/trunk/main/src/test/java/org/apache/jsieve/utils/JUnitUtils.java Sun Dec 7 09:31:54 2008
@@ -28,6 +28,7 @@
import org.apache.jsieve.ConfigurationManager;
import org.apache.jsieve.exception.SieveException;
import org.apache.jsieve.mail.MailAdapter;
+import org.apache.jsieve.parser.generated.Node;
import org.apache.jsieve.parser.generated.ParseException;
/**
@@ -56,9 +57,9 @@
* @throws SieveException
* @throws ParseException
*/
- static public void parse(String script) throws SieveException,
+ static public Node parse(String script) throws SieveException,
ParseException {
- new ConfigurationManager().build().parse(
+ return new ConfigurationManager().build().parse(
new ByteArrayInputStream(script.getBytes()));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org