[jboss-svn-commits] JBL Code SVN: r11706 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client/packages and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon May 7 03:17:31 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-05-07 03:17:31 -0400 (Mon, 07 May 2007)
New Revision: 11706

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleValidatorWrapper.java
Removed:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleBuilderWidget.java
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/RulePackageSelector.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageBuilderWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/builder/ContentPackageAssembler.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
Log:
JBRULES-832, JBRULES-777 asset validation

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/RulePackageSelector.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/RulePackageSelector.java	2007-05-07 07:09:54 UTC (rev 11705)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/RulePackageSelector.java	2007-05-07 07:17:31 UTC (rev 11706)
@@ -35,6 +35,7 @@
             
         });
         
+        
         initWidget( packageList );
     }
     

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageBuilderWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageBuilderWidget.java	2007-05-07 07:09:54 UTC (rev 11705)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageBuilderWidget.java	2007-05-07 07:17:31 UTC (rev 11706)
@@ -38,6 +38,7 @@
 
 /**
  * This is the widget for building packages, validating etc. 
+ * Visually decorates or wraps a rule editor widget with buttons for this purpose.
  * 
  * @author Michael Neale
  */
@@ -103,12 +104,12 @@
 
 
     /**
-     * Popup the view source.
+     * Popup the view source dialog, showing the given content.
      */
-    private static void showSource(String content, String name) {
+    public static void showSource(String content, String name) {
         FormStylePopup pop = new FormStylePopup("images/view_source.gif", "Viewing source for: " + name);
         TextArea area = new TextArea();
-        area.setVisibleLines( 48 );
+        area.setVisibleLines( 30 );
         area.setWidth( "100%" );
         area.setCharacterWidth( 80 );
         pop.addRow( area );

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java	2007-05-07 07:09:54 UTC (rev 11705)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java	2007-05-07 07:17:31 UTC (rev 11706)
@@ -37,15 +37,15 @@
                                          RuleViewer viewer) {
         //depending on the format, load the appropriate editor
         if ( asset.metaData.format.equals( AssetFormats.BUSINESS_RULE ) ) {
-            return new RuleModeller( asset  );
+            return new RuleValidatorWrapper( new RuleModeller( asset  ), asset);
         } else if ( asset.metaData.format.equals( AssetFormats.DSL_TEMPLATE_RULE ) ) {
-            return new DSLRuleEditor( asset );
+            return new RuleValidatorWrapper(new DSLRuleEditor( asset ), asset);
         } else if ( asset.metaData.format.equals( AssetFormats.MODEL ) ) {
             return new ModelAttachmentFileWidget( asset, viewer );
         } else if (asset.metaData.format.equals( AssetFormats.DECISION_SPREADSHEET_XLS )){
-            return new DecisionTableXLSWidget( asset, viewer );
+            return new RuleValidatorWrapper(new DecisionTableXLSWidget( asset, viewer ), asset);
         } else {
-            return new DefaultRuleContentWidget( asset );
+            return new RuleValidatorWrapper(new DefaultRuleContentWidget( asset ), asset);
         }
 
     }

Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleBuilderWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleBuilderWidget.java	2007-05-07 07:09:54 UTC (rev 11705)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleBuilderWidget.java	2007-05-07 07:17:31 UTC (rev 11706)
@@ -1,56 +0,0 @@
-package org.drools.brms.client.ruleeditor;
-
-import org.drools.brms.client.rpc.RuleAsset;
-
-import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FlexTable;
-import com.google.gwt.user.client.ui.HasHorizontalAlignment;
-import com.google.gwt.user.client.ui.HasVerticalAlignment;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Widget;
-
-/**
- * This widget wraps a rule asset widget, and provides actions to validate and view source.
- * @author Michael Neale
- */
-public class RuleBuilderWidget extends Composite {
-
-    
-    private RuleAsset asset;
-
-    public RuleBuilderWidget(Widget editor, RuleAsset asset) {
-        this.asset = asset;
-        
-        
-        FlexTable layout = new FlexTable();
-        layout.setStyleName( "asset-editor-Layout" );
-        layout.setWidget( 0, 0, editor );
-        layout.setWidget( 1, 0, validatorActions() );
-        layout.getCellFormatter().setAlignment( 1, 0, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_MIDDLE );
-        
-        
-        
-        initWidget( editor );
-    }
-
-    private Widget validatorActions() {
-        HorizontalPanel horiz = new HorizontalPanel();
-        Button viewSource = new Button("View source");
-        horiz.add( viewSource );
-        
-        Button validate = new Button("Validate");
-        horiz.add( validate );
-        
-        viewSource.addClickListener( new ClickListener() {
-            public void onClick(Widget w) {
-                //doViewsource();
-            }
-        });
-        
-        horiz.setStyleName( "asset-validator-Buttons" );
-        return horiz;
-    }
-    
-}

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleValidatorWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleValidatorWrapper.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleValidatorWrapper.java	2007-05-07 07:17:31 UTC (rev 11706)
@@ -0,0 +1,130 @@
+package org.drools.brms.client.ruleeditor;
+
+import org.drools.brms.client.common.FormStylePopup;
+import org.drools.brms.client.common.GenericCallback;
+import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.packages.PackageBuilderWidget;
+import org.drools.brms.client.rpc.BuilderResult;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+import org.drools.brms.client.rpc.RuleAsset;
+
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.HasHorizontalAlignment;
+import com.google.gwt.user.client.ui.HasVerticalAlignment;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * This widget wraps a rule asset widget, and provides actions to validate and view source.
+ * @author Michael Neale
+ */
+public class RuleValidatorWrapper extends Composite {
+
+    
+    private RuleAsset asset;
+
+    public RuleValidatorWrapper(Widget editor, RuleAsset asset) {
+        this.asset = asset;
+        
+        
+        FlexTable layout = new FlexTable();
+        layout.setStyleName( "asset-editor-Layout" );
+        layout.setWidget( 0, 0, editor );
+        layout.setWidget( 1, 0, validatorActions() );
+        layout.getCellFormatter().setAlignment( 1, 0, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_MIDDLE );
+        
+        
+        layout.setWidth("100%");
+        layout.setHeight( "100%" );
+        
+        initWidget( layout );
+    }
+
+    private Widget validatorActions() {
+        HorizontalPanel horiz = new HorizontalPanel();
+        Button viewSource = new Button("View source");
+        horiz.add( viewSource );
+        
+        Button validate = new Button("Validate");
+        horiz.add( validate );
+        
+        viewSource.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                doViewsource();
+            }
+
+        });
+        
+        validate.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                doValidate();
+            }
+        });
+        
+        horiz.setStyleName( "asset-validator-Buttons" );
+        return horiz;
+    }
+    
+    private void doValidate() {
+        
+        LoadingPopup.showMessage( "Validating item, please wait..." );
+        RepositoryServiceFactory.getService().buildAsset( asset, new GenericCallback() {
+            public void onSuccess(Object data) {
+                BuilderResult[] results = (BuilderResult[]) data;
+                showBuilderErrors(results);
+            }
+        });
+        
+    }
+
+    private void doViewsource() {
+        LoadingPopup.showMessage( "Calculating source..." );
+        RepositoryServiceFactory.getService().buildAssetSource( this.asset, new GenericCallback() {
+            public void onSuccess(Object data) {
+                String src = (String) data;
+                showSource(src);
+            }
+        });
+        
+    }
+
+    private void showSource(String src) {
+        PackageBuilderWidget.showSource( src, this.asset.metaData.name );
+        LoadingPopup.close();
+    }
+    
+    private void showBuilderErrors(BuilderResult[] results) {
+        FormStylePopup pop = new FormStylePopup("images/package_builder.png", "Validation results");
+        if (results == null || results.length == 0) {
+            pop.addRow( new HTML("<img src='images/tick_green.gif'/><i>Rule built successfully.</i>") );
+        } else {
+            FlexTable errTable = new FlexTable();
+            errTable.setStyleName( "build-Results" );
+            for ( int i = 0; i < results.length; i++ ) {
+                int row = i;
+                final BuilderResult res = results[i];
+                errTable.setWidget( row, 0, new Image("images/error.gif"));
+                if( res.assetFormat.equals( "package" )) {
+                    errTable.setText( row, 1, "[package configuration problem] " + res.message );
+                } else {
+                    errTable.setText( row, 1, res.message );
+                }
+                
+            }
+            errTable.setWidth( "100%" );
+            pop.addRow( errTable );
+            
+        }
+        pop.setPopupPosition( 100, 100 );
+        pop.show();
+        LoadingPopup.close();
+    }
+    
+    
+    
+}

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/builder/ContentPackageAssembler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/builder/ContentPackageAssembler.java	2007-05-07 07:09:54 UTC (rev 11705)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/builder/ContentPackageAssembler.java	2007-05-07 07:17:31 UTC (rev 11706)
@@ -164,6 +164,9 @@
     }
     
     private void addDrl(String drl) {
+        if ("".equals( drl )) {
+            return;
+        }
         try {
             builder.addPackageFromDrl( new StringReader(drl) );
         } catch ( DroolsParserException e ) {

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java	2007-05-07 07:09:54 UTC (rev 11705)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java	2007-05-07 07:17:31 UTC (rev 11706)
@@ -1204,7 +1204,47 @@
         assertNull(result);
         
     }
+    
+    public void testBuildAssetWithPackageConfigError() throws Exception {
+        ServiceImplementation impl = getService();
+        RulesRepository repo = impl.repository;
+        
+        PackageItem pkg = repo.createPackage( "testBuildAssetWithPackageConfigError", "" );
+//        AssetItem model = pkg.addAsset( "MyModel", "" );
+//        model.updateFormat( AssetFormats.MODEL );
+//        model.updateBinaryContentAttachment( this.getClass().getResourceAsStream( "/billasurf.jar" ) );
+//        model.checkin( "" );
+        
+//        pkg.updateHeader( "import com.billasurf.Person" );
+        
+        
+        AssetItem asset = pkg.addAsset( "testRule", "" );
+        asset.updateFormat( AssetFormats.DRL );
+        asset.updateContent( "rule 'MyGoodRule' \n when \n then \n end");
+        asset.checkin( "" );
+        repo.save();
+        
+        RuleAsset rule = impl.loadRuleAsset( asset.getUUID() );
 
+        //check its all OK
+        BuilderResult[] result = impl.buildAsset( rule );
+        if (!(result == null)) {
+            System.err.println(result[0].assetName + " " + result[0].message);
+        }
+        assertNull(result);
+        
+        pkg.updateHeader( "importxxxx" );
+        repo.save();
+        result = impl.buildAsset( rule );
+        assertNotNull(result);
+        
+        assertEquals(1, result.length);
+        assertEquals("package", result[0].assetFormat);
+        assertNotNull(result[0].message);
+        
+        
+    }
+
     private ServiceImplementation getService() throws Exception {
         ServiceImplementation impl = new ServiceImplementation();
         impl.repository = new RulesRepository( TestEnvironmentSessionHelper.getSession() );




More information about the jboss-svn-commits mailing list