[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