[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