[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