[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