[jboss-svn-commits] JBL Code SVN: r31095 - in labs/jbossrules/trunk/drools-verifier: src/main/java/org/drools/verifier/components and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jan 15 03:57:58 EST 2010
Author: Rikkola
Date: 2010-01-15 03:57:58 -0500 (Fri, 15 Jan 2010)
New Revision: 31095
Added:
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/importsAndDeclarations.drl
Modified:
labs/jbossrules/trunk/drools-verifier/.classpath
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/ObjectType.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java
Log:
JBRULES-2407 : Handle declarations and collect metadatas and fields
Modified: labs/jbossrules/trunk/drools-verifier/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-verifier/.classpath 2010-01-14 17:40:32 UTC (rev 31094)
+++ labs/jbossrules/trunk/drools-verifier/.classpath 2010-01-15 08:57:58 UTC (rev 31095)
@@ -5,24 +5,22 @@
<classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/com.springsource.com.thoughtworks.xstream/1.3.1/com.springsource.com.thoughtworks.xstream-1.3.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/com.springsource.org.antlr.runtime/3.1.3/com.springsource.org.antlr.runtime-3.1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/jasper/springsource/com.springsource.org.apache.jasper.org.eclipse.jdt.springsource/6.0.20.S2-r5956/com.springsource.org.apache.jasper.org.eclipse.jdt.springsource-6.0.20.S2-r5956.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/janino/com.springsource.org.codehaus.janino/2.5.15/com.springsource.org.codehaus.janino-2.5.15.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/xmlpull/com.springsource.org.xmlpull/1.1.4.c/com.springsource.org.xmlpull-1.1.4.c.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
<classpathentry kind="var" path="M2_REPO/org/drools/drools-api/5.1.0.SNAPSHOT/drools-api-5.1.0.SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/5.1.0.SNAPSHOT/drools-compiler-5.1.0.SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/drools/drools-core/5.1.0.SNAPSHOT/drools-core-5.1.0.SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/com/google/collections/google-collections/0.8/google-collections-0.8.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/gunit/3.1.3/gunit-3.1.3.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar" sourcepath="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/4.6/junit-4.6.jar"/>
<classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.12/mvel2-2.0.12.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/stringtemplate/3.2/stringtemplate-3.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar"/>
</classpath>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/ObjectType.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/ObjectType.java 2010-01-14 17:40:32 UTC (rev 31094)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/ObjectType.java 2010-01-15 08:57:58 UTC (rev 31095)
@@ -1,7 +1,9 @@
package org.drools.verifier.components;
import java.io.Serializable;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
import org.drools.verifier.data.VerifierComponent;
@@ -13,16 +15,18 @@
public class ObjectType extends VerifierComponent
implements
Serializable {
- private static final long serialVersionUID = -783733402566313623L;
+ private static final long serialVersionUID = -783733402566313623L;
- private int offset = 0;
+ private int offset = 0;
- private String fullName;
+ private String fullName;
- private String name;
+ private String name;
- private Set<Field> fields = new HashSet<Field>();
+ private Set<Field> fields = new HashSet<Field>();
+ private Map<String, String> metadata = new HashMap<String, String>();
+
public int getOffset() {
offset++;
return offset % 2;
@@ -60,4 +64,7 @@
return "ObjectType: " + fullName;
}
+ public Map<String, String> getMetadata() {
+ return metadata;
+ }
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java 2010-01-14 17:40:32 UTC (rev 31094)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java 2010-01-15 08:57:58 UTC (rev 31095)
@@ -40,6 +40,7 @@
import org.drools.lang.descr.RestrictionConnectiveDescr;
import org.drools.lang.descr.ReturnValueRestrictionDescr;
import org.drools.lang.descr.RuleDescr;
+import org.drools.lang.descr.TypeDeclarationDescr;
import org.drools.lang.descr.VariableRestrictionDescr;
import org.drools.verifier.components.Consequence;
import org.drools.verifier.components.Constraint;
@@ -556,8 +557,37 @@
}
}
- // TODO: Declaretions
+ // Declarations
+ for ( TypeDeclarationDescr typeDeclaration : descr.getTypeDeclarations() ) {
+ String objectTypeName = imports.get( typeDeclaration.getTypeName() );
+ if ( objectTypeName == null ) objectTypeName = typeDeclaration.getTypeName();
+ ObjectType objectType = this.data.getObjectTypeByFullName( objectTypeName );
+
+ if ( objectType == null ) {
+ objectType = new ObjectType();
+ objectType.setName( typeDeclaration.getTypeName() );
+ objectType.setFullName( typeDeclaration.getTypeName() );
+ data.add( objectType );
+ }
+
+ for ( String fieldName : typeDeclaration.getFields().keySet() ) {
+
+ Field field = data.getFieldByObjectTypeAndFieldName( objectType.getFullName(),
+ fieldName );
+ if ( field == null ) {
+ field = createField( fieldName,
+ objectType );
+ field.setFieldType( typeDeclaration.getFields().get( fieldName ).getPattern().getObjectType() );
+ data.add( field );
+ }
+ }
+ for ( String metadata : typeDeclaration.getMetaAttributes().keySet() ) {
+ objectType.getMetadata().put( metadata,
+ typeDeclaration.getMetaAttribute( metadata ) );
+ }
+ }
+
if ( rulePackage == null ) {
rulePackage = new RulePackage();
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java 2010-01-14 17:40:32 UTC (rev 31094)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java 2010-01-15 08:57:58 UTC (rev 31095)
@@ -2,6 +2,7 @@
import java.io.IOException;
import java.util.Collection;
+import java.util.Iterator;
import java.util.jar.JarInputStream;
import junit.framework.TestCase;
@@ -94,16 +95,67 @@
Collection<Field> fields = result.getVerifierData().getAll( VerifierComponentType.FIELD );
- for ( Field field : fields ) {
- System.out.println( field );
- }
assertNotNull( fields );
assertEquals( 10,
fields.size() );
- System.out.println( "Done" );
}
+ public void testFactTypesFromJarAndDeclarations() {
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ // Check that the builder works.
+ assertFalse( vBuilder.hasErrors() );
+ assertEquals( 0,
+ vBuilder.getErrors().size() );
+
+ Verifier verifier = vBuilder.newVerifier();
+
+ try {
+
+ JarInputStream jar = new JarInputStream( this.getClass().getResourceAsStream( "model.jar" ) );
+
+ verifier.addObjectModel( jar );
+
+ } catch ( IOException e ) {
+ fail( e.getMessage() );
+ }
+
+ verifier.addResourcesToVerify( new ClassPathResource( "importsAndDeclarations.drl",
+ Verifier.class ),
+ ResourceType.DRL );
+
+ assertFalse( verifier.hasErrors() );
+ assertEquals( 0,
+ verifier.getErrors().size() );
+
+ boolean works = verifier.fireAnalysis();
+
+ assertTrue( works );
+
+ VerifierReport result = verifier.getResult();
+
+ Collection<ObjectType> objectTypes = result.getVerifierData().getAll( VerifierComponentType.OBJECT_TYPE );
+
+ for ( ObjectType objectType : objectTypes ) {
+ if ( objectType.getName().equals( "VoiceCall" ) ) {
+ assertEquals( 4,
+ objectType.getMetadata().keySet().size() );
+ }
+ }
+
+ assertNotNull( objectTypes );
+ assertEquals( 4,
+ objectTypes.size() );
+
+ Collection<Field> fields = result.getVerifierData().getAll( VerifierComponentType.FIELD );
+
+ assertNotNull( fields );
+ assertEquals( 11,
+ fields.size() );
+
+ }
+
public void testCustomRule() {
VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java 2010-01-14 17:40:32 UTC (rev 31094)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java 2010-01-15 08:57:58 UTC (rev 31095)
@@ -42,9 +42,6 @@
assertEquals( 51,
all.size() );
- // for ( VerifierComponent verifierComponent : all ) {
- // System.out.println( verifierComponent );
- // }
}
public void testSubPatterns() throws DroolsParserException,
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/importsAndDeclarations.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/importsAndDeclarations.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/importsAndDeclarations.drl 2010-01-15 08:57:58 UTC (rev 31095)
@@ -0,0 +1,17 @@
+package com.misc.someData
+
+import org.test.Person;
+import org.test.Pet;
+import org.test.Rambo;
+
+
+declare Person
+ sex : String
+end
+
+declare VoiceCall
+ @role( event )
+ @timestamp( callDateTime )
+ @duration( callDuration )
+ @expires( 1h35m )
+end
\ No newline at end of file
More information about the jboss-svn-commits
mailing list