[jboss-svn-commits] JBL Code SVN: r12459 - in labs/jbossrules/trunk/drools-compiler: src/main/java/org/drools/lang/descr and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jun 11 15:09:22 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-06-11 15:09:22 -0400 (Mon, 11 Jun 2007)
New Revision: 12459

Modified:
   labs/jbossrules/trunk/drools-compiler/.classpath
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/QueryDescr.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_QueryWithParams.drl
Log:
JBRULES-917 Allow querry params to specify type

Modified: labs/jbossrules/trunk/drools-compiler/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.classpath	2007-06-11 18:14:26 UTC (rev 12458)
+++ labs/jbossrules/trunk/drools-compiler/.classpath	2007-06-11 19:09:22 UTC (rev 12459)
@@ -5,16 +5,16 @@
   <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
   <classpathentry kind="output" path="target/classes"/>
   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2beta23/mvel14-1.2beta23.jar"/>
+  <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
   <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/antlr/stringtemplate/3.0/stringtemplate-3.0.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.0/antlr-3.0.jar"/>
   <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.7/janino-2.5.7.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
+  <classpathentry kind="src" path="/drools-core"/>
+  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2beta24/mvel14-1.2beta24.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.1.v_677_R32x/core-3.2.1.v_677_R32x.jar"/>
   <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/antlr/stringtemplate/3.0/stringtemplate-3.0.jar"/>
   <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
-  <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
-  <classpathentry kind="src" path="/drools-core"/>
-  <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.1.v_677_R32x/core-3.2.1.v_677_R32x.jar"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/QueryDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/QueryDescr.java	2007-06-11 18:14:26 UTC (rev 12458)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/QueryDescr.java	2007-06-11 19:09:22 UTC (rev 12459)
@@ -18,6 +18,7 @@
 
 public class QueryDescr extends RuleDescr {
     private String[] params;
+    private String[] types;
     
     private static final String[] EMPTY_PARAMS = new String[0];
     /**
@@ -29,13 +30,7 @@
         this( name,
               "" );
         this.params = EMPTY_PARAMS;        
-    }
-    
-    public QueryDescr(final String name, final String[] params) {
-        this( name,
-              "" );
-        this.params = params;        
-    }    
+    }      
 
     public QueryDescr(final String ruleName,
                       final String documentation) {
@@ -59,4 +54,12 @@
     public String[] getParameters() {
         return this.params;
     }
+    
+    public void setParameterTypes(String[] types) {
+        this.types = types;
+    }
+    
+    public String[] getParameterTypes() {
+        return this.types;
+    }    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java	2007-06-11 18:14:26 UTC (rev 12458)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java	2007-06-11 19:09:22 UTC (rev 12459)
@@ -20,13 +20,13 @@
 
 public class QueryBuilder {
     public Pattern build(final RuleBuildContext context,
-                         final QueryDescr queryDescr) {   
+                         final QueryDescr queryDescr) {
         ObjectType objectType = new ClassObjectType( DroolsQuery.class );
-        final Pattern  pattern = new Pattern( context.getNextPatternId(),
-                               0, // offset is 0 by default
-                               objectType,
-                               null );        
-        
+        final Pattern pattern = new Pattern( context.getNextPatternId(),
+                                             0, // offset is 0 by default
+                                             objectType,
+                                             null );
+
         final ClassFieldExtractor extractor = new ClassFieldExtractor( DroolsQuery.class,
                                                                        "name" );
 
@@ -38,24 +38,36 @@
                                                                     field );
         // adds appropriate constraint to the pattern
         pattern.addConstraint( constraint );
-        
+
         Extractor arrayExtractor = null;
         try {
             ClassLoader classloader = context.getPkg().getPackageCompilationData().getClassLoader();
             arrayExtractor = context.getDialect().getClassFieldExtractorCache().getExtractor( ((ClassObjectType) objectType).getClassType(),
-                                                                                         "arguments",
-                                                                                         classloader );
+                                                                                              "arguments",
+                                                                                              classloader );
         } catch ( final RuntimeDroolsException e ) {
-                context.getErrors().add( new RuleError( context.getRule(),
-                                                        queryDescr,
-                                                        e,
-                                                        "Unable to create Field Extractor for 'getArguments'" ) );
+            context.getErrors().add( new RuleError( context.getRule(),
+                                                    queryDescr,
+                                                    e,
+                                                    "Unable to create Field Extractor for 'getArguments'" ) );
         }
-        
+
         String[] params = queryDescr.getParameters();
-        for ( int i = 0; i < params.length; i++ ) {            
-            pattern.addDeclaration( params[i], new ArrayExtractor(arrayExtractor, i) );
+        String[] types = queryDescr.getParameterTypes();
+        int i = 0;
+        try {
+        for ( i = 0; i < params.length; i++ ) {
+            pattern.addDeclaration( params[i],
+                                    new ArrayExtractor( arrayExtractor,
+                                                        i,
+                                                        context.getDialect().getTypeResolver().resolveType( types[i] ) ) );
         }
+        } catch ( ClassNotFoundException e ) {
+            context.getErrors().add( new RuleError( context.getRule(),
+                                                    queryDescr,
+                                                    e,
+                                                    "Unable to resolve type '" + types[i] + " for parameter" + params[i] ) );            
+        }
         return pattern;
     }
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2007-06-11 18:14:26 UTC (rev 12458)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2007-06-11 19:09:22 UTC (rev 12459)
@@ -850,7 +850,9 @@
         final PackageBuilder builder = new PackageBuilder();
 
         final PackageDescr packageDescr = new PackageDescr( "p1" );
-        final QueryDescr queryDescr = new QueryDescr( "query1", new String[] { "$type" } );
+        final QueryDescr queryDescr = new QueryDescr( "query1" );
+        queryDescr.setParameters( new String[] { "$type" } );
+        queryDescr.setParameterTypes( new String[] { "String" } );
         
         packageDescr.addRule( queryDescr );
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_QueryWithParams.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_QueryWithParams.drl	2007-06-11 18:14:26 UTC (rev 12458)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_QueryWithParams.drl	2007-06-11 19:09:22 UTC (rev 12459)
@@ -13,6 +13,6 @@
     assertedobj : AssertedObject( value == $value )
 end 
 
-query "assertedobjquery2" ( $value1, $value2 )
+query "assertedobjquery2" ( $value1, String $value2 )
     assertedobj : AssertedObject( value == $value2 )
 end 
\ No newline at end of file




More information about the jboss-svn-commits mailing list