[jboss-svn-commits] JBL Code SVN: r15648 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/xml and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Oct 8 10:52:19 EDT 2007
Author: fmeyer
Date: 2007-10-08 10:52:18 -0400 (Mon, 08 Oct 2007)
New Revision: 15648
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java
labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-4.0.xsd
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseImport.xml
Log:
JBRULES-1252 - XmlDumper/XmlParser does does not handles with import functions
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java 2007-10-08 14:05:10 UTC (rev 15647)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java 2007-10-08 14:52:18 UTC (rev 15648)
@@ -266,6 +266,9 @@
if ( packageDescr.getGlobals() != null ) {
appendDrlDump( processGlobalsList( packageDescr.getGlobals() ) );
}
+ if ( packageDescr.getFunctionImports() != null ) {
+ appendDrlDump( processFunctionImportsList( packageDescr.getFunctionImports() ) );
+ }
if ( packageDescr.getFunctions() != null ) {
appendDrlDump( processFunctionsList( packageDescr.getFunctions() ) );
}
@@ -479,7 +482,18 @@
return globalList + DrlDumper.eol;
}
+
+ private String processFunctionImportsList(final List imports) {
+ String importList = "";
+ for ( final Iterator it = imports.iterator(); it.hasNext(); ) {
+ final String importString = ((FunctionImportDescr) it.next()).getTarget();
+ final String importTemplate = "import function " + importString + ";" + DrlDumper.eol;
+ importList = importTemplate;
+ }
+ return importList + DrlDumper.eol;
+ }
+
private String processImportsList(final List imports) {
String importList = "";
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java 2007-10-08 14:05:10 UTC (rev 15647)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java 2007-10-08 14:52:18 UTC (rev 15648)
@@ -18,6 +18,7 @@
import java.util.HashSet;
+import org.drools.lang.descr.FunctionImportDescr;
import org.drools.lang.descr.GlobalDescr;
import org.drools.lang.descr.ImportDescr;
import org.drools.lang.descr.PackageDescr;
@@ -83,7 +84,24 @@
}
packageDescr.addImport( new ImportDescr( importEntry ) );
}
+
+ final Configuration[] importfunctions = config.getChildren( "importfunction" );
+ for ( int i = 0, length = importfunctions.length; i < length; i++ ) {
+ final String importfunctionEntry = importfunctions[i].getAttribute( "name" );
+
+ if ( importfunctionEntry == null || importfunctionEntry.trim().equals( "" ) ) {
+ throw new SAXParseException( "<importfunction> cannot be blank",
+ this.xmlPackageReader.getLocator() );
+ }
+
+ FunctionImportDescr funcdescr = new FunctionImportDescr();
+ funcdescr.setTarget( importfunctionEntry );
+
+ packageDescr.addFunctionImport(funcdescr);
+ }
+
+
final Configuration[] globals = config.getChildren( "global" );
for ( int i = 0, length = globals.length; i < length; i++ ) {
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 2007-10-08 14:05:10 UTC (rev 15647)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlDumper.java 2007-10-08 14:52:18 UTC (rev 15648)
@@ -31,6 +31,7 @@
import org.drools.lang.descr.ForallDescr;
import org.drools.lang.descr.FromDescr;
import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.FunctionImportDescr;
import org.drools.lang.descr.GlobalDescr;
import org.drools.lang.descr.ImportDescr;
import org.drools.lang.descr.LiteralRestrictionDescr;
@@ -90,29 +91,29 @@
this.patternContext = true;
this.template = new String();
StringBuffer localString = new StringBuffer();
-
+
if ( descr.getDescrs() != Collections.EMPTY_LIST ) {
if ( descr.getIdentifier() != null ) {
- localString.append("<pattern identifier=\"" + descr.getIdentifier() + "\" object-type=\"" + descr.getObjectType() + "\" >" + XmlDumper.eol + processDescrList( descr.getDescrs() ) + XmlDumper.eol);
+ localString.append( "<pattern identifier=\"" + descr.getIdentifier() + "\" object-type=\"" + descr.getObjectType() + "\" >" + XmlDumper.eol + processDescrList( descr.getDescrs() ) + XmlDumper.eol );
} else {
- localString.append("<pattern object-type=\"" + descr.getObjectType() + "\" >" + XmlDumper.eol + processDescrList( descr.getDescrs() ) + XmlDumper.eol);
+ localString.append( "<pattern object-type=\"" + descr.getObjectType() + "\" >" + XmlDumper.eol + processDescrList( descr.getDescrs() ) + XmlDumper.eol );
}
} else {
if ( descr.getIdentifier() != null ) {
- localString.append("<pattern identifier=\"" + descr.getIdentifier() + "\" object-type=\"" + descr.getObjectType() + "\" >" + XmlDumper.eol);;
+ localString.append( "<pattern identifier=\"" + descr.getIdentifier() + "\" object-type=\"" + descr.getObjectType() + "\" >" + XmlDumper.eol );;
} else {
- localString.append("<pattern object-type=\"" + descr.getObjectType() + "\" >" + XmlDumper.eol);
+ localString.append( "<pattern object-type=\"" + descr.getObjectType() + "\" >" + XmlDumper.eol );
}
}
-
+
if ( descr.getSource() != null ) {
- visit(descr.getSource());
+ visit( descr.getSource() );
localString.append( this.template );
}
- localString.append("</pattern>" + XmlDumper.eol);
-
+ localString.append( "</pattern>" + XmlDumper.eol );
+
this.template = localString.toString();
-
+
this.patternContext = false;
}
@@ -125,21 +126,21 @@
public void visitCollectDescr(final CollectDescr descr) {
StringBuffer tmpstr = new StringBuffer();
tmpstr.append( "<from> <collect>" );
- visit(descr.getInputPattern() );
+ visit( descr.getInputPattern() );
tmpstr.append( this.template );
- tmpstr.append(" </collect> </from> ");
+ tmpstr.append( " </collect> </from> " );
this.template = tmpstr.toString();
}
public void visitAccumulateDescr(final AccumulateDescr descr) {
String tmpstr = new String();
tmpstr += this.template + " <from> <accumulate> ";
-
- if ( descr.isSinglePattern() ) {
- visitPatternDescr( descr.getInputPattern() );
+
+ if ( descr.isSinglePattern() ) {
+ visitPatternDescr( descr.getInputPattern() );
} else {
- this.patternContext = false;
- visit(descr.getInput());
+ this.patternContext = false;
+ visit( descr.getInput() );
}
tmpstr += this.template;
@@ -223,6 +224,7 @@
appendXmlDump( xmlString );
appendXmlDump( processImportsList( packageDescr.getImports() ) );
appendXmlDump( processGlobalsList( packageDescr.getGlobals() ) );
+ appendXmlDump( processFunctionImportsList( packageDescr.getFunctionImports() ));
appendXmlDump( processFunctionsList( packageDescr.getFunctions() ) );
appendXmlDump( processRules( packageDescr.getRules() ) );
appendXmlDump( "</package>" );
@@ -336,6 +338,17 @@
return paramList + XmlDumper.eol;
}
+ private String processFunctionImportsList(final List imports) {
+ String importList = "";
+
+ for ( final Iterator it = imports.iterator(); it.hasNext(); ) {
+ final String importString = ((FunctionImportDescr) it.next()).getTarget();
+ final String importTemplate = "<importfunction name=\"" + importString + "\"/>" + XmlDumper.eol;
+ importList += importTemplate;
+ }
+ return importList + XmlDumper.eol;
+ }
+
private String processGlobalsList(final List globals) {
String globalList = "";
for ( final Iterator iterator = globals.iterator(); iterator.hasNext(); ) {
Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-4.0.xsd
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-4.0.xsd 2007-10-08 14:05:10 UTC (rev 15647)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-4.0.xsd 2007-10-08 14:52:18 UTC (rev 15648)
@@ -4,6 +4,7 @@
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element ref="drools:import"/>
+ <xs:element ref="drools:importfunction"/>
<xs:element ref="drools:global"/>
<xs:element ref="drools:function"/>
<xs:element ref="drools:rule"/>
@@ -51,6 +52,11 @@
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
+ <xs:element name="importfunction">
+ <xs:complexType>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
<xs:element name="global">
<xs:complexType>
<xs:attribute name="type" type="xs:string" use="required"/>
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java 2007-10-08 14:05:10 UTC (rev 15647)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/XmlPackageReaderTest.java 2007-10-08 14:52:18 UTC (rev 15648)
@@ -21,6 +21,7 @@
import org.drools.lang.descr.ForallDescr;
import org.drools.lang.descr.FromDescr;
import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.FunctionImportDescr;
import org.drools.lang.descr.GlobalDescr;
import org.drools.lang.descr.ImportDescr;
import org.drools.lang.descr.LiteralRestrictionDescr;
@@ -266,6 +267,11 @@
((ImportDescr) imports.get( 0 )).getTarget() );
assertEquals( "org.drools.*",
((ImportDescr) imports.get( 1 )).getTarget() );
+
+ final List functionImport = packageDescr.getFunctionImports();
+
+ assertEquals("org.drools.function",
+ ((FunctionImportDescr) functionImport.get( 0 )).getTarget() );
}
public void testParseGlobal() throws Exception {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseImport.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseImport.xml 2007-10-08 14:05:10 UTC (rev 15647)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseImport.xml 2007-10-08 14:52:18 UTC (rev 15648)
@@ -5,5 +5,7 @@
xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
<import name="java.util.HashMap" />
- <import name="org.drools.*" />
+ <import name="org.drools.*" />
+ <importfunction name="org.drools.function" />
+
</package>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list