[jboss-svn-commits] JBL Code SVN: r11376 - in labs/jbossrules/trunk: drools-compiler/src/main/java/org/drools/brms/server/util and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Apr 26 16:02:16 EDT 2007


Author: tirelli
Date: 2007-04-26 16:02:16 -0400 (Thu, 26 Apr 2007)
New Revision: 11376

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRDRLPersistence.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRXMLPersistence.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRDRLPersitenceTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRXMLPersitenceTest.java
Removed:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRLPersistence.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRLPersitenceTest.java
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/RuleAttribute.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/BRXMLContentHandler.java
Log:
JBRULES-647: adding persister from ROM to DRL

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/RuleAttribute.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/RuleAttribute.java	2007-04-26 19:56:41 UTC (rev 11375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/brxml/RuleAttribute.java	2007-04-26 20:02:16 UTC (rev 11376)
@@ -8,6 +8,9 @@
     implements
     PortableObject {
 
+    private static final String NOLOOP   = "no-loop";
+    private static final String SALIENCE = "salience";
+
     public RuleAttribute(final String name,
                          final String value) {
         this.attributeName = name;
@@ -20,4 +23,21 @@
     public RuleAttribute() {
     }
 
+    public String toString() {
+        StringBuffer ret = new StringBuffer();
+        ret.append( this.attributeName );
+        if ( NOLOOP.equals( attributeName ) ) {
+            ret.append( " " );
+            ret.append( this.value == null ? "true" : this.value );
+        } else if ( SALIENCE.equals( this.attributeName ) ) {
+            ret.append( " " );
+            ret.append( this.value );
+        } else if ( this.value != null ) {
+            ret.append( " \"" );
+            ret.append( this.value );
+            ret.append( "\"" );
+        }
+        return ret.toString();
+    }
+
 }

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRDRLPersistence.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRDRLPersistence.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRDRLPersistence.java	2007-04-26 20:02:16 UTC (rev 11376)
@@ -0,0 +1,275 @@
+package org.drools.brms.server.util;
+
+import org.drools.brms.client.modeldriven.brxml.ActionAssertFact;
+import org.drools.brms.client.modeldriven.brxml.ActionAssertLogicalFact;
+import org.drools.brms.client.modeldriven.brxml.ActionFieldValue;
+import org.drools.brms.client.modeldriven.brxml.ActionModifyField;
+import org.drools.brms.client.modeldriven.brxml.ActionRetractFact;
+import org.drools.brms.client.modeldriven.brxml.ActionSetField;
+import org.drools.brms.client.modeldriven.brxml.CompositeFactPattern;
+import org.drools.brms.client.modeldriven.brxml.ConnectiveConstraint;
+import org.drools.brms.client.modeldriven.brxml.Constraint;
+import org.drools.brms.client.modeldriven.brxml.DSLSentence;
+import org.drools.brms.client.modeldriven.brxml.FactPattern;
+import org.drools.brms.client.modeldriven.brxml.IAction;
+import org.drools.brms.client.modeldriven.brxml.IConstraint;
+import org.drools.brms.client.modeldriven.brxml.IPattern;
+import org.drools.brms.client.modeldriven.brxml.RuleModel;
+import org.drools.util.ReflectiveVisitor;
+
+/**
+ * This class persists the rule model to DRL and back
+ * 
+ * @author etirelli
+ */
+public class BRDRLPersistence
+    implements
+    BRLPersistence {
+
+    private static final BRLPersistence INSTANCE = new BRDRLPersistence();
+
+    private BRDRLPersistence() {
+    }
+
+    public static BRLPersistence getInstance() {
+        return INSTANCE;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.brms.server.util.BRLPersistence#marshal(org.drools.brms.client.modeldriven.brxml.RuleModel)
+     */
+    public String marshal(RuleModel model) {
+        StringBuffer buf = new StringBuffer();
+        buf.append( "rule \"" + model.name + "\"\n" );
+        this.marshalAttributes( buf,
+                                model );
+        buf.append( "\twhen\n" );
+        this.marshalLHS( buf,
+                         model );
+        buf.append( "\tthen\n" );
+        this.marshalRHS( buf,
+                         model );
+        buf.append( "end\n" );
+        return buf.toString();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.brms.server.util.BRLPersistence#unmarshal(java.lang.String)
+     */
+    public RuleModel unmarshal(String str) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    /**
+     * Marshal model attributes
+     * 
+     * @param buf
+     * @param model
+     */
+    private void marshalAttributes(StringBuffer buf,
+                                   RuleModel model) {
+        for ( int i = 0; i < model.attributes.length; i++ ) {
+            buf.append( "\t" );
+            buf.append( model.attributes[i] );
+            buf.append( "\n" );
+        }
+    }
+
+    /**
+     * Marshal LHS patterns
+     * 
+     * @param buf
+     * @param model
+     */
+    private void marshalLHS(StringBuffer buf,
+                            RuleModel model) {
+        IPattern[] lhs = model.lhs;
+        for ( int i = 0; i < lhs.length; i++ ) {
+            final IPattern cond = lhs[i];
+            if ( cond instanceof DSLSentence ) {
+                // need to decide what to do with DSL sentences
+                //render((DSLSentence) cond, buf);
+            } else if ( cond instanceof FactPattern ) {
+                marshalFact( buf,
+                             (FactPattern) cond );
+            } else if ( cond instanceof CompositeFactPattern ) {
+//                addComposite( lhsDescr,
+//                              (CompositeFactPattern) cond );
+            }
+        }
+    }
+
+    private void marshalFact(StringBuffer buf,
+                             FactPattern pattern) {
+        buf.append( "\t\t" );
+        if ( pattern.boundName != null ) {
+            buf.append( pattern.boundName );
+            buf.append( " : " );
+        }
+        if ( pattern.factType != null ) {
+            buf.append( pattern.factType );
+        }
+        buf.append( "( " );
+
+        for ( int i = 0; i < pattern.constraints.length; i++ ) {
+            if( i > 0 ) {
+                buf.append( ", " );
+            }
+            final Constraint constr = pattern.constraints[i];
+            if ( constr.constraintValueType == IConstraint.TYPE_PREDICATE ) {
+                buf.append( "( " );
+                buf.append( constr.value );
+                buf.append( " )" );
+            } else {
+                if ( constr.fieldBinding != null ) {
+                    buf.append( constr.fieldBinding );
+                    buf.append( " : " );
+                }
+                buf.append( constr.fieldName );
+
+                addFieldRestriction( buf,
+                                     constr.constraintValueType,
+                                     constr.operator,
+                                     constr.value );
+
+                if ( constr.connectives != null ) {
+                    for ( int j = 0; j < constr.connectives.length; j++ ) {
+                        final ConnectiveConstraint conn = constr.connectives[j];
+                        if ( conn.isANDConnective() ) {
+                            buf.append( " &" );
+                        } else if ( conn.isORConnective() ) {
+                            buf.append( " |" );
+                        } else {
+                            throw new IllegalStateException( "Unknown connective type/operator: [" + conn.operator + "]" );
+                        }
+
+                        addFieldRestriction( buf,
+                                             conn.constraintValueType,
+                                             conn.operator,
+                                             conn.value );
+                    }
+                }
+            }
+        }
+        buf.append( ")\n" );
+    }
+
+    private void marshalRHS(StringBuffer buf,
+                            RuleModel model) {
+        IAction[] rhs = model.rhs;
+        RHSActionVisitor visitor = new RHSActionVisitor( buf );
+        for ( int i = 0; i < rhs.length; i++ ) {
+            final IAction action = rhs[i];
+            visitor.visit( action );
+        }
+    }
+
+
+    /**
+     * @param constr
+     * @param constrDescr
+     */
+    private void addFieldRestriction(final StringBuffer buf,
+                                     final int type,
+                                     final String operator,
+                                     final String value) {
+        buf.append( " " );
+        buf.append( operator );
+        buf.append( " " );
+        switch ( type ) {
+            case IConstraint.TYPE_RET_VALUE :
+                buf.append( "( " );
+                buf.append( operator );
+                buf.append( " )" );
+                break;
+            default :
+                buf.append( value );
+        }
+    }
+    
+    public static class RHSActionVisitor extends ReflectiveVisitor {
+        private StringBuffer buf;
+        private int idx = 0;
+
+        public RHSActionVisitor( StringBuffer b ) {
+            buf = b;
+        }
+        
+        public void visitActionAssertFact( final ActionAssertFact action ) {
+            this.generateAssertCall( action, false );
+        }
+
+        public void visitActionAssertLogicalFact( final ActionAssertLogicalFact action ) {
+            this.generateAssertCall( action, false );
+        }
+        
+        private void generateAssertCall( final ActionAssertFact action, final boolean isLogic ) {
+            if( action.fieldValues.length == 0 ) {
+                buf.append( "\t\tassert( new " );
+                buf.append( action.factType );
+                buf.append( "() );\n" );
+            } else {
+                buf.append( "\t\t" );
+                buf.append( action.factType );
+                buf.append( " fact" );
+                buf.append( idx );
+                buf.append( " = new " );
+                buf.append( action.factType );
+                buf.append( "();\n" );
+                generateSetMethodCalls( "fact"+idx, action.fieldValues );
+                if( isLogic ) {
+                    buf.append( "\t\tassertLogical( fact" );
+               } else {
+                    buf.append( "\t\tassert( fact" );
+                }
+                buf.append( idx++ );
+                buf.append( " );\n" );
+            }
+        }
+
+        public void visitActionModifyField( final ActionModifyField action ) {
+            this.visitActionSetField( action );
+            buf.append( "\t\tmodify( " );
+            buf.append( action.variable );
+            buf.append( " );\n" );
+        }
+        
+        public void visitActionRetractFact( final ActionRetractFact action ) {
+            buf.append( "\t\tretract( " );
+            buf.append( action.variableName );
+            buf.append( " );\n" );
+        }
+        
+        public void visitDSLSentence( final DSLSentence sentence ) {
+            buf.append( "\t\t" );
+            buf.append( sentence.sentence );
+            buf.append( "\n" );
+        }
+        
+        public void visitActionSetField( final ActionSetField action ) {
+            this.generateSetMethodCalls( action.variable, action.fieldValues );
+        }
+        
+        private void generateSetMethodCalls(final String variableName, final ActionFieldValue[] fieldValues) {
+            for( int i = 0; i < fieldValues.length; i++ ) {
+                buf.append( "\t\t" );
+                buf.append( variableName );
+                buf.append( ".set" );
+                buf.append( Character.toUpperCase( fieldValues[i].field.charAt( 0 ) ) );
+                buf.append( fieldValues[i].field.substring( 1 ) );
+                buf.append( "( " );
+                if( fieldValues[i].isFormula() ) {
+                    buf.append( fieldValues[i].value );
+                } else {
+                    buf.append( "\"" );
+                    buf.append( fieldValues[i].value );
+                    buf.append( "\"" );
+                }
+                buf.append( " );\n" );
+            }
+        }
+        
+    }
+
+}

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRLPersistence.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRLPersistence.java	2007-04-26 19:56:41 UTC (rev 11375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRLPersistence.java	2007-04-26 20:02:16 UTC (rev 11376)
@@ -1,84 +0,0 @@
-package org.drools.brms.server.util;
-
-import org.drools.brms.client.modeldriven.brxml.ActionAssertFact;
-import org.drools.brms.client.modeldriven.brxml.ActionAssertLogicalFact;
-import org.drools.brms.client.modeldriven.brxml.ActionFieldValue;
-import org.drools.brms.client.modeldriven.brxml.ActionModifyField;
-import org.drools.brms.client.modeldriven.brxml.ActionRetractFact;
-import org.drools.brms.client.modeldriven.brxml.ActionSetField;
-import org.drools.brms.client.modeldriven.brxml.CompositeFactPattern;
-import org.drools.brms.client.modeldriven.brxml.ConnectiveConstraint;
-import org.drools.brms.client.modeldriven.brxml.Constraint;
-import org.drools.brms.client.modeldriven.brxml.DSLSentence;
-import org.drools.brms.client.modeldriven.brxml.FactPattern;
-import org.drools.brms.client.modeldriven.brxml.RuleAttribute;
-import org.drools.brms.client.modeldriven.brxml.RuleModel;
-
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
-
-/**
- * This class persists the rule model to XML and back.
- * 
- * This is the 'brxml' xml format (Business Rule Language).
- * 
- * @author Michael Neale
- */
-public class BRLPersistence {
-
-    private XStream                     xt;
-    private static final BRLPersistence INSTANCE = new BRLPersistence();
-
-    private BRLPersistence() {
-        this.xt = new XStream( new DomDriver() );
-
-        this.xt.alias( "rule",
-                  RuleModel.class );
-        this.xt.alias( "fact",
-                  FactPattern.class );
-        this.xt.alias( "retract",
-                  ActionRetractFact.class );
-        this.xt.alias( "assert",
-                  ActionAssertFact.class );
-        this.xt.alias( "modify",
-                  ActionModifyField.class );
-        this.xt.alias( "setField",
-                  ActionSetField.class );
-        this.xt.alias( "dslSentence",
-                  DSLSentence.class );
-        this.xt.alias( "compositePattern",
-                  CompositeFactPattern.class );
-        this.xt.alias( "attribute",
-                  RuleAttribute.class );
-
-        this.xt.alias( "fieldValue",
-                  ActionFieldValue.class );
-        this.xt.alias( "connectiveConstraint",
-                  ConnectiveConstraint.class );
-        this.xt.alias( "constraint",
-                  Constraint.class );
-
-        this.xt.alias( "assertLogical",
-                  ActionAssertLogicalFact.class );
-
-    }
-
-    public static BRLPersistence getInstance() {
-        return INSTANCE;
-    }
-
-    public String toXML(final RuleModel model) {
-        return this.xt.toXML( model );
-    }
-
-    public RuleModel toModel(final String xml) {
-        if ( xml == null ) {
-            return new RuleModel();
-        }
-        if ( xml.trim().equals( "" ) ) {
-            return new RuleModel();
-        }
-        return (RuleModel) this.xt.fromXML( xml );
-    }
-
-}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRXMLPersistence.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRXMLPersistence.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/BRXMLPersistence.java	2007-04-26 20:02:16 UTC (rev 11376)
@@ -0,0 +1,90 @@
+package org.drools.brms.server.util;
+
+import org.drools.brms.client.modeldriven.brxml.ActionAssertFact;
+import org.drools.brms.client.modeldriven.brxml.ActionAssertLogicalFact;
+import org.drools.brms.client.modeldriven.brxml.ActionFieldValue;
+import org.drools.brms.client.modeldriven.brxml.ActionModifyField;
+import org.drools.brms.client.modeldriven.brxml.ActionRetractFact;
+import org.drools.brms.client.modeldriven.brxml.ActionSetField;
+import org.drools.brms.client.modeldriven.brxml.CompositeFactPattern;
+import org.drools.brms.client.modeldriven.brxml.ConnectiveConstraint;
+import org.drools.brms.client.modeldriven.brxml.Constraint;
+import org.drools.brms.client.modeldriven.brxml.DSLSentence;
+import org.drools.brms.client.modeldriven.brxml.FactPattern;
+import org.drools.brms.client.modeldriven.brxml.RuleAttribute;
+import org.drools.brms.client.modeldriven.brxml.RuleModel;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+
+/**
+ * This class persists the rule model to XML and back.
+ * 
+ * This is the 'brxml' xml format (Business Rule Language).
+ * 
+ * @author Michael Neale
+ */
+public class BRXMLPersistence implements BRLPersistence {
+
+    private XStream                     xt;
+    private static final BRLPersistence INSTANCE = new BRXMLPersistence();
+
+    private BRXMLPersistence() {
+        this.xt = new XStream( new DomDriver() );
+
+        this.xt.alias( "rule",
+                  RuleModel.class );
+        this.xt.alias( "fact",
+                  FactPattern.class );
+        this.xt.alias( "retract",
+                  ActionRetractFact.class );
+        this.xt.alias( "assert",
+                  ActionAssertFact.class );
+        this.xt.alias( "modify",
+                  ActionModifyField.class );
+        this.xt.alias( "setField",
+                  ActionSetField.class );
+        this.xt.alias( "dslSentence",
+                  DSLSentence.class );
+        this.xt.alias( "compositePattern",
+                  CompositeFactPattern.class );
+        this.xt.alias( "attribute",
+                  RuleAttribute.class );
+
+        this.xt.alias( "fieldValue",
+                  ActionFieldValue.class );
+        this.xt.alias( "connectiveConstraint",
+                  ConnectiveConstraint.class );
+        this.xt.alias( "constraint",
+                  Constraint.class );
+
+        this.xt.alias( "assertLogical",
+                  ActionAssertLogicalFact.class );
+
+    }
+
+    public static BRLPersistence getInstance() {
+        return INSTANCE;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.brms.server.util.BRLPersistence#toXML(org.drools.brms.client.modeldriven.brxml.RuleModel)
+     */
+    public String marshal(final RuleModel model) {
+        return this.xt.toXML( model );
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.brms.server.util.BRLPersistence#toModel(java.lang.String)
+     */
+    public RuleModel unmarshal(final String xml) {
+        if ( xml == null ) {
+            return new RuleModel();
+        }
+        if ( xml.trim().equals( "" ) ) {
+            return new RuleModel();
+        }
+        return (RuleModel) this.xt.fromXML( xml );
+    }
+
+}

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRDRLPersitenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRDRLPersitenceTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRDRLPersitenceTest.java	2007-04-26 20:02:16 UTC (rev 11376)
@@ -0,0 +1,142 @@
+package org.drools.brms.server.util;
+
+import junit.framework.TestCase;
+
+import org.drools.brms.client.modeldriven.brxml.ActionAssertFact;
+import org.drools.brms.client.modeldriven.brxml.ActionFieldValue;
+import org.drools.brms.client.modeldriven.brxml.ActionModifyField;
+import org.drools.brms.client.modeldriven.brxml.ActionRetractFact;
+import org.drools.brms.client.modeldriven.brxml.CompositeFactPattern;
+import org.drools.brms.client.modeldriven.brxml.Constraint;
+import org.drools.brms.client.modeldriven.brxml.DSLSentence;
+import org.drools.brms.client.modeldriven.brxml.FactPattern;
+import org.drools.brms.client.modeldriven.brxml.RuleAttribute;
+import org.drools.brms.client.modeldriven.brxml.RuleModel;
+
+public class BRDRLPersitenceTest extends TestCase {
+
+    private BRLPersistence p;
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        p = BRDRLPersistence.getInstance();
+    }
+
+    public void testGenerateEmptyDRL() {
+        String expected = "rule \"null\"\n\twhen\n\tthen\nend\n";
+
+        final String drl = p.marshal( new RuleModel() );
+
+        assertNotNull( drl );
+        assertEquals( expected,
+                      drl );
+    }
+
+    public void testBasics() {
+        String expected = "rule \"my rule\"\n\tno-loop true\n\twhen\n\t\tPerson( )\n" + 
+                          "\t\tAccident( )\n\tthen\n\t\tassert( new Report() );\nend\n";
+        final RuleModel m = new RuleModel();
+        m.addLhsItem( new FactPattern( "Person" ) );
+        m.addLhsItem( new FactPattern( "Accident" ) );
+        m.addAttribute( new RuleAttribute( "no-loop",
+                                           "true" ) );
+
+        m.addRhsItem( new ActionAssertFact( "Report" ) );
+        m.name = "my rule";
+
+        final String drl = p.marshal( m );
+        assertEquals( expected,
+                      drl );
+    }
+
+    public void testMoreComplexRendering() {
+        final RuleModel m = getComplexModel();
+
+        final String drl = p.marshal( m );
+        //System.out.println( drl );
+
+        assertTrue( drl.indexOf( "org.drools" ) == -1 );
+
+    }
+
+    //
+    //    public void testRoundTrip() {
+    //        final RuleModel m = getComplexModel();
+    //
+    //        final String xml = BRXMLPersistence.getInstance().marshal( m );
+    //
+    //        final RuleModel m2 = BRXMLPersistence.getInstance().unmarshal( xml );
+    //        assertNotNull( m2 );
+    //        assertEquals( m.name,
+    //                      m2.name );
+    //        assertEquals( m.lhs.length,
+    //                      m2.lhs.length );
+    //        assertEquals( m.rhs.length,
+    //                      m2.rhs.length );
+    //        assertEquals( 1,
+    //                      m.attributes.length );
+    //
+    //        final RuleAttribute at = m.attributes[0];
+    //        assertEquals( "no-loop",
+    //                      at.attributeName );
+    //        assertEquals( "true",
+    //                      at.value );
+    //
+    //        final String newXML = BRXMLPersistence.getInstance().marshal( m2 );
+    //        assertEquals( xml,
+    //                      newXML );
+    //
+    //    }
+    //
+    private RuleModel getComplexModel() {
+        final RuleModel m = new RuleModel();
+        m.name = "Complex Rule";
+
+        m.addAttribute( new RuleAttribute( "no-loop",
+                                           "true" ) );
+        m.addAttribute( new RuleAttribute( "salience",
+                                           "-10" ) );
+        m.addAttribute( new RuleAttribute( "agenda-group",
+                                           "aGroup" ) );
+
+        final FactPattern pat = new FactPattern();
+        pat.boundName = "p1";
+        pat.factType = "Person";
+        final Constraint con = new Constraint();
+        con.fieldBinding = "f1";
+        con.fieldName = "age";
+        con.operator = "<";
+        con.value = "42";
+        pat.addConstraint( con );
+
+        m.addLhsItem( pat );
+
+        final CompositeFactPattern comp = new CompositeFactPattern( "not" );
+        comp.addFactPattern( new FactPattern( "Cancel" ) );
+        m.addLhsItem( comp );
+
+        final ActionModifyField set = new ActionModifyField();
+        set.variable = "p1";
+        set.addFieldValue( new ActionFieldValue( "status",
+                                                 "rejected" ) );
+        m.addRhsItem( set );
+
+        final ActionRetractFact ret = new ActionRetractFact( "p1" );
+        m.addRhsItem( ret );
+
+        final DSLSentence sen = new DSLSentence();
+        sen.sentence = "Send an email to {administrator}";
+
+        m.addRhsItem( sen );
+        return m;
+    }
+
+    //    public void testLoadEmpty() {
+    //        RuleModel m = BRXMLPersistence.getInstance().unmarshal( null );
+    //        assertNotNull( m );
+    //
+    //        m = BRXMLPersistence.getInstance().unmarshal( "" );
+    //        assertNotNull( m );
+    //    }
+
+}

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRLPersitenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRLPersitenceTest.java	2007-04-26 19:56:41 UTC (rev 11375)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRLPersitenceTest.java	2007-04-26 20:02:16 UTC (rev 11376)
@@ -1,131 +0,0 @@
-package org.drools.brms.server.util;
-
-import junit.framework.TestCase;
-
-import org.drools.brms.client.modeldriven.brxml.ActionAssertFact;
-import org.drools.brms.client.modeldriven.brxml.ActionFieldValue;
-import org.drools.brms.client.modeldriven.brxml.ActionModifyField;
-import org.drools.brms.client.modeldriven.brxml.ActionRetractFact;
-import org.drools.brms.client.modeldriven.brxml.CompositeFactPattern;
-import org.drools.brms.client.modeldriven.brxml.Constraint;
-import org.drools.brms.client.modeldriven.brxml.DSLSentence;
-import org.drools.brms.client.modeldriven.brxml.FactPattern;
-import org.drools.brms.client.modeldriven.brxml.RuleAttribute;
-import org.drools.brms.client.modeldriven.brxml.RuleModel;
-
-public class BRLPersitenceTest extends TestCase {
-
-    public void testGenerateEmptyXML() {
-        final BRLPersistence p = BRLPersistence.getInstance();
-        final String xml = p.toXML( new RuleModel() );
-        assertNotNull( xml );
-        assertFalse( xml.equals( "" ) );
-
-        assertTrue( xml.startsWith( "<rule>" ) );
-        assertTrue( xml.endsWith( "</rule>" ) );
-    }
-
-    public void testBasics() {
-        final BRLPersistence p = BRLPersistence.getInstance();
-        final RuleModel m = new RuleModel();
-        m.addLhsItem( new FactPattern( "Person" ) );
-        m.addLhsItem( new FactPattern( "Accident" ) );
-        m.addAttribute( new RuleAttribute( "no-loop",
-                                           "true" ) );
-
-        m.addRhsItem( new ActionAssertFact( "Report" ) );
-        m.name = "my rule";
-        final String xml = p.toXML( m );
-        assertTrue( xml.indexOf( "Person" ) > -1 );
-        assertTrue( xml.indexOf( "Accident" ) > -1 );
-        assertTrue( xml.indexOf( "no-loop" ) > -1 );
-        assertTrue( xml.indexOf( "org.drools" ) == -1 );
-
-    }
-
-    public void testMoreComplexRendering() {
-        final BRLPersistence p = BRLPersistence.getInstance();
-        final RuleModel m = getComplexModel();
-
-        final String xml = p.toXML( m );
-        System.out.println( xml );
-
-        assertTrue( xml.indexOf( "org.drools" ) == -1 );
-
-    }
-
-    public void testRoundTrip() {
-        final RuleModel m = getComplexModel();
-
-        final String xml = BRLPersistence.getInstance().toXML( m );
-
-        final RuleModel m2 = BRLPersistence.getInstance().toModel( xml );
-        assertNotNull( m2 );
-        assertEquals( m.name,
-                      m2.name );
-        assertEquals( m.lhs.length,
-                      m2.lhs.length );
-        assertEquals( m.rhs.length,
-                      m2.rhs.length );
-        assertEquals( 1,
-                      m.attributes.length );
-
-        final RuleAttribute at = m.attributes[0];
-        assertEquals( "no-loop",
-                      at.attributeName );
-        assertEquals( "true",
-                      at.value );
-
-        final String newXML = BRLPersistence.getInstance().toXML( m2 );
-        assertEquals( xml,
-                      newXML );
-
-    }
-
-    private RuleModel getComplexModel() {
-        final RuleModel m = new RuleModel();
-
-        m.addAttribute( new RuleAttribute( "no-loop",
-                                           "true" ) );
-
-        final FactPattern pat = new FactPattern();
-        pat.boundName = "p1";
-        pat.factType = "Person";
-        final Constraint con = new Constraint();
-        con.fieldBinding = "f1";
-        con.fieldName = "age";
-        con.operator = "<";
-        con.value = "42";
-        pat.addConstraint( con );
-
-        m.addLhsItem( pat );
-
-        final CompositeFactPattern comp = new CompositeFactPattern( "not" );
-        comp.addFactPattern( new FactPattern( "Cancel" ) );
-        m.addLhsItem( comp );
-
-        final ActionModifyField set = new ActionModifyField();
-        set.variable = "p1";
-        set.addFieldValue( new ActionFieldValue( "status",
-                                                 "rejected" ) );
-        m.addRhsItem( set );
-
-        final ActionRetractFact ret = new ActionRetractFact( "p1" );
-        m.addRhsItem( ret );
-
-        final DSLSentence sen = new DSLSentence();
-        sen.sentence = "Send an email to {administrator}";
-
-        m.addRhsItem( sen );
-        return m;
-    }
-
-    public void testLoadEmpty() {
-        RuleModel m = BRLPersistence.getInstance().toModel( null );
-        assertNotNull( m );
-
-        m = BRLPersistence.getInstance().toModel( "" );
-        assertNotNull( m );
-    }
-
-}

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRXMLPersitenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRXMLPersitenceTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/util/BRXMLPersitenceTest.java	2007-04-26 20:02:16 UTC (rev 11376)
@@ -0,0 +1,132 @@
+package org.drools.brms.server.util;
+
+import junit.framework.TestCase;
+
+import org.drools.brms.client.modeldriven.brxml.ActionAssertFact;
+import org.drools.brms.client.modeldriven.brxml.ActionFieldValue;
+import org.drools.brms.client.modeldriven.brxml.ActionModifyField;
+import org.drools.brms.client.modeldriven.brxml.ActionRetractFact;
+import org.drools.brms.client.modeldriven.brxml.CompositeFactPattern;
+import org.drools.brms.client.modeldriven.brxml.Constraint;
+import org.drools.brms.client.modeldriven.brxml.DSLSentence;
+import org.drools.brms.client.modeldriven.brxml.FactPattern;
+import org.drools.brms.client.modeldriven.brxml.RuleAttribute;
+import org.drools.brms.client.modeldriven.brxml.RuleModel;
+
+public class BRXMLPersitenceTest extends TestCase {
+
+    public void testGenerateEmptyXML() {
+        final BRLPersistence p = BRXMLPersistence.getInstance();
+        final String xml = p.marshal( new RuleModel() );
+        assertNotNull( xml );
+        assertFalse( xml.equals( "" ) );
+
+        assertTrue( xml.startsWith( "<rule>" ) );
+        assertTrue( xml.endsWith( "</rule>" ) );
+    }
+
+    public void testBasics() {
+        final BRLPersistence p = BRXMLPersistence.getInstance();
+        final RuleModel m = new RuleModel();
+        m.addLhsItem( new FactPattern( "Person" ) );
+        m.addLhsItem( new FactPattern( "Accident" ) );
+        m.addAttribute( new RuleAttribute( "no-loop",
+                                           "true" ) );
+
+        m.addRhsItem( new ActionAssertFact( "Report" ) );
+        m.name = "my rule";
+        final String xml = p.marshal( m );
+        //System.out.println(xml);
+        assertTrue( xml.indexOf( "Person" ) > -1 );
+        assertTrue( xml.indexOf( "Accident" ) > -1 );
+        assertTrue( xml.indexOf( "no-loop" ) > -1 );
+        assertTrue( xml.indexOf( "org.drools" ) == -1 );
+
+    }
+
+    public void testMoreComplexRendering() {
+        final BRLPersistence p = BRXMLPersistence.getInstance();
+        final RuleModel m = getComplexModel();
+
+        final String xml = p.marshal( m );
+        //System.out.println( xml );
+
+        assertTrue( xml.indexOf( "org.drools" ) == -1 );
+
+    }
+
+    public void testRoundTrip() {
+        final RuleModel m = getComplexModel();
+
+        final String xml = BRXMLPersistence.getInstance().marshal( m );
+
+        final RuleModel m2 = BRXMLPersistence.getInstance().unmarshal( xml );
+        assertNotNull( m2 );
+        assertEquals( m.name,
+                      m2.name );
+        assertEquals( m.lhs.length,
+                      m2.lhs.length );
+        assertEquals( m.rhs.length,
+                      m2.rhs.length );
+        assertEquals( 1,
+                      m.attributes.length );
+
+        final RuleAttribute at = m.attributes[0];
+        assertEquals( "no-loop",
+                      at.attributeName );
+        assertEquals( "true",
+                      at.value );
+
+        final String newXML = BRXMLPersistence.getInstance().marshal( m2 );
+        assertEquals( xml,
+                      newXML );
+
+    }
+
+    private RuleModel getComplexModel() {
+        final RuleModel m = new RuleModel();
+
+        m.addAttribute( new RuleAttribute( "no-loop",
+                                           "true" ) );
+
+        final FactPattern pat = new FactPattern();
+        pat.boundName = "p1";
+        pat.factType = "Person";
+        final Constraint con = new Constraint();
+        con.fieldBinding = "f1";
+        con.fieldName = "age";
+        con.operator = "<";
+        con.value = "42";
+        pat.addConstraint( con );
+
+        m.addLhsItem( pat );
+
+        final CompositeFactPattern comp = new CompositeFactPattern( "not" );
+        comp.addFactPattern( new FactPattern( "Cancel" ) );
+        m.addLhsItem( comp );
+
+        final ActionModifyField set = new ActionModifyField();
+        set.variable = "p1";
+        set.addFieldValue( new ActionFieldValue( "status",
+                                                 "rejected" ) );
+        m.addRhsItem( set );
+
+        final ActionRetractFact ret = new ActionRetractFact( "p1" );
+        m.addRhsItem( ret );
+
+        final DSLSentence sen = new DSLSentence();
+        sen.sentence = "Send an email to {administrator}";
+
+        m.addRhsItem( sen );
+        return m;
+    }
+
+    public void testLoadEmpty() {
+        RuleModel m = BRXMLPersistence.getInstance().unmarshal( null );
+        assertNotNull( m );
+
+        m = BRXMLPersistence.getInstance().unmarshal( "" );
+        assertNotNull( m );
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/BRXMLContentHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/BRXMLContentHandler.java	2007-04-26 19:56:41 UTC (rev 11375)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/BRXMLContentHandler.java	2007-04-26 20:02:16 UTC (rev 11376)
@@ -6,7 +6,7 @@
 import org.drools.brms.client.rpc.RuleAsset;
 import org.drools.brms.server.builder.BRMSPackageBuilder;
 import org.drools.brms.server.builder.ContentPackageAssembler;
-import org.drools.brms.server.util.BRLPersistence;
+import org.drools.brms.server.util.BRXMLPersistence;
 import org.drools.compiler.DroolsParserException;
 import org.drools.repository.AssetItem;
 import org.drools.repository.PackageItem;
@@ -19,7 +19,7 @@
     public void retrieveAssetContent(RuleAsset asset,
                                      PackageItem pkg,
                                      AssetItem item) throws SerializableException {
-        RuleModel model = BRLPersistence.getInstance().toModel( item.getContent() );
+        RuleModel model = BRXMLPersistence.getInstance().unmarshal( item.getContent() );
 
 
         
@@ -30,7 +30,7 @@
     public void storeAssetContent(RuleAsset asset,
                                   AssetItem repoAsset) throws SerializableException {
         RuleModel data = (RuleModel) asset.content;
-        repoAsset.updateContent( BRLPersistence.getInstance().toXML( data ) );
+        repoAsset.updateContent( BRXMLPersistence.getInstance().marshal( data ) );
     }
 
     public void compile(BRMSPackageBuilder builder, AssetItem asset, ContentPackageAssembler.ErrorLogger logger) throws DroolsParserException,




More information about the jboss-svn-commits mailing list