[jboss-svn-commits] JBL Code SVN: r5949 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/xml test/resources/org/drools/integrationtests
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Aug 19 20:45:10 EDT 2006
Author: mark.proctor at jboss.com
Date: 2006-08-19 20:45:06 -0400 (Sat, 19 Aug 2006)
New Revision: 5949
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Dumpers.drl
Log:
JBRULES-393 Xml dump with illegal characters
-fixed by Javier Prieto
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java 2006-08-20 00:19:29 UTC (rev 5948)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java 2006-08-20 00:45:06 UTC (rev 5949)
@@ -75,7 +75,7 @@
public void visitVariableRestrictionDescr(final VariableRestrictionDescr descr) {
this.template = new String();
- this.template = "<variable-restriction evaluator=\"" + getEvaluator( descr.getEvaluator() ) + "\" identifier=\"" + descr.getIdentifier() + "\" />" + XmlDumper.eol;
+ this.template = "<variable-restriction evaluator=\"" + replaceIllegalChars( descr.getEvaluator() ) + "\" identifier=\"" + descr.getIdentifier() + "\" />" + XmlDumper.eol;
}
public void visitColumnDescr(final ColumnDescr descr) {
@@ -99,12 +99,12 @@
public void visitFieldConstraintDescr(final FieldConstraintDescr descr) {
if ( !descr.getRestrictions().isEmpty() ) {
processFieldConstraint( descr.getRestrictions() );
- }
- }
-
+ }
+ }
+
public void visitEvalDescr(final EvalDescr descr) {
this.template = new String();
- this.template = "<eval>" + descr.getText() + "</eval>" + XmlDumper.eol;
+ this.template = "<eval>" + replaceIllegalChars( descr.getText() ) + "</eval>" + XmlDumper.eol;
}
public void visitExistsDescr(final ExistsDescr descr) {
@@ -124,14 +124,15 @@
public void visitFunctionDescr(final FunctionDescr functionDescr) {
this.template = new String();
final String parameterTemplate = processParameters( functionDescr.getParameterNames(),
- functionDescr.getParameterTypes() );
+ functionDescr.getParameterTypes() );
- this.template = "<function return-type=\"" + functionDescr.getReturnType() + "\" name=\"" + functionDescr.getName() + "\">" + XmlDumper.eol + parameterTemplate + "<body>" + XmlDumper.eol + functionDescr.getText() + XmlDumper.eol + "</body>" + XmlDumper.eol + "</function>" + XmlDumper.eol;
+ this.template = "<function return-type=\"" + functionDescr.getReturnType() + "\" name=\"" + functionDescr.getName() + "\">" + XmlDumper.eol + parameterTemplate + "<body>" + XmlDumper.eol + replaceIllegalChars( functionDescr.getText() ) + XmlDumper.eol + "</body>"
+ + XmlDumper.eol + "</function>" + XmlDumper.eol;
}
public void visitLiteralRestrictionDescr(final LiteralRestrictionDescr descr) {
this.template = new String();
- this.template = "<literal-restriction evaluator=\"" + getEvaluator( descr.getEvaluator() ) + "\" value=\"" + descr.getText() + "\" />" + XmlDumper.eol;
+ this.template = "<literal-restriction evaluator=\"" + replaceIllegalChars( descr.getEvaluator() ) + "\" value=\"" + replaceIllegalChars( descr.getText() ) + "\" />" + XmlDumper.eol;
}
public void visitNotDescr(final NotDescr descr) {
@@ -155,8 +156,8 @@
public void visitPackageDescr(final PackageDescr packageDescr) {
final String packageName = packageDescr.getName();
- final String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> " + XmlDumper.eol + " <package name=\"" + packageName + "\" " + XmlDumper.eol + "\txmlns=\"http://drools.org/drools-3.0\" " + XmlDumper.eol + "\txmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\" " + XmlDumper.eol
- + "\txs:schemaLocation=\"http://drools.org/drools-3.0 drools-3.0.xsd\"> " + XmlDumper.eol;
+ final String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> " + XmlDumper.eol + " <package name=\"" + packageName + "\" " + XmlDumper.eol + "\txmlns=\"http://drools.org/drools-3.0\" " + XmlDumper.eol
+ + "\txmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\" " + XmlDumper.eol + "\txs:schemaLocation=\"http://drools.org/drools-3.0 drools-3.0.xsd\"> " + XmlDumper.eol;
appendXmlDump( xmlString );
appendXmlDump( processImportsList( packageDescr.getImports() ) );
appendXmlDump( processGlobalsMap( packageDescr.getGlobals() ) );
@@ -167,12 +168,12 @@
public void visitPredicateDescr(final PredicateDescr descr) {
this.template = new String();
- this.template = "<predicate field-name=\"" + descr.getFieldName() + "\" identifier=\"" + descr.getDeclaration() + "\" >" + descr.getText() + "</predicate>" + XmlDumper.eol;
+ this.template = "<predicate field-name=\"" + descr.getFieldName() + "\" identifier=\"" + descr.getDeclaration() + "\" >" + replaceIllegalChars( descr.getText() ) + "</predicate>" + XmlDumper.eol;
}
public void visitReturnValueRestrictionDescr(final ReturnValueRestrictionDescr descr) {
this.template = new String();
- this.template = "<return-value-restriction evaluator=\"" + getEvaluator( descr.getEvaluator() ) + "\" >" + descr.getText() + "</return-value>" + XmlDumper.eol;
+ this.template = "<return-value-restriction evaluator=\"" + replaceIllegalChars( descr.getEvaluator() ) + "\" >" + replaceIllegalChars( descr.getText() ) + "</return-value>" + XmlDumper.eol;
}
public void visitQueryDescr(final QueryDescr descr) {
@@ -196,7 +197,7 @@
lhs = "<lhs> </lhs>";
}
- final String rhs = "<rhs>" + ruleDescr.getConsequence() + "</rhs>" + XmlDumper.eol;
+ final String rhs = "<rhs>" + replaceIllegalChars( ruleDescr.getConsequence() ) + "</rhs>" + XmlDumper.eol;
rule += attribute;
rule += lhs;
rule += rhs;
@@ -206,19 +207,19 @@
return ruleList + XmlDumper.eol;
}
-
+
private String processFieldConstraint(List list) {
String descrString = "";
for ( final Iterator it = list.iterator(); it.hasNext(); ) {
final Object temp = it.next();
- descrString += "<field-restrictions name=\"" +((FieldConstraintDescr) temp).getFieldName() + "\"> ";
+ descrString += "<field-restrictions name=\"" + ((FieldConstraintDescr) temp).getFieldName() + "\"> ";
visit( temp );
- descrString += "</field-restrictions>";
+ descrString += "</field-restrictions>";
descrString += this.template;
}
return descrString.substring( 0,
descrString.length() - 2 );
- }
+ }
private String processDescrList(final List descr) {
String descrString = "";
@@ -292,13 +293,30 @@
private void appendXmlDump(final String temp) {
this.xmlDump.append( temp );
}
-
- private String getEvaluator(String eval) {
-
- eval = eval.replaceAll( "<",
- "<" );
- eval = eval.replaceAll( ">",
- ">" );
- return eval;
- }
+
+ /**
+ * Replace illegal xml characters with their escaped equivalent
+ * <P>The escaped characters are :
+ * <ul>
+ * <li> <
+ * <li> >
+ * <li> &
+ * </ul>
+ * </p>
+ * @author <a href="mailto:prietor at gmail.com">Author Javier Prieto</a>
+ */
+ private String replaceIllegalChars(String code) {
+ StringBuffer sb = new StringBuffer();
+ int n = code.length();
+ for (int i = 0; i < n; i++) {
+ char c = code.charAt(i);
+ switch (c) {
+ case '<': sb.append("<"); break;
+ case '>': sb.append(">"); break;
+ case '&': sb.append("&"); break;
+ default: sb.append(c); break;
+ }
+ }
+ return sb.toString();
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Dumpers.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Dumpers.drl 2006-08-20 00:19:29 UTC (rev 5948)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Dumpers.drl 2006-08-20 00:45:06 UTC (rev 5949)
@@ -9,8 +9,12 @@
when
Cheese( )
then
- list.add( "MAIN" );
- drools.setFocus( "agenda group 1" );
+ // lets also make sure that special chars are converted
+ if ( 3 < 4 && 4 > 3 ) {
+ list.add( "MAIN" );
+ drools.setFocus( "agenda group 1" );
+ }
+
end
rule "test group1 1"
@@ -29,7 +33,7 @@
when
Cheese( )
then
- list.add( "3 1" );
+ list.add( "3 1" );
end
More information about the jboss-svn-commits
mailing list