[jboss-svn-commits] JBL Code SVN: r6849 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client main/java/org/drools/brms/client/categorynav main/java/org/drools/brms/client/common main/java/org/drools/brms/client/rpc main/java/org/drools/brms/client/rpc/mock main/java/org/drools/brms/client/ruleeditor main/java/org/drools/brms/public main/java/org/drools/brms/public/images main/java/org/drools/brms/server test/java/org/drools/brms/server

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 17 07:20:43 EDT 2006


Author: michael.neale at jboss.com
Date: 2006-10-17 07:20:19 -0400 (Tue, 17 Oct 2006)
New Revision: 6849

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup.java
   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/SortableGrid.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/WarningPopup.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/interfacegen.rb
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/validation_error.gif
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/MockJBRMSServiceServlet.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
Removed:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ErrorPopup.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImpl.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplTest.java
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Search.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryEditor.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryExplorerWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategorySelectHandler.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/NewRuleWizard.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleDocumentWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java
Log:
More chunks of ajax goodness

Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ErrorPopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ErrorPopup.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ErrorPopup.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -1,65 +0,0 @@
-package org.drools.brms.client;
-
-import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.Panel;
-import com.google.gwt.user.client.ui.PopupPanel;
-import com.google.gwt.user.client.ui.Widget;
-
-
-/** 
- * Generic error dialog popup.
- * This is a lazy singleton, only really need one to be shown at time. 
- */
-public class ErrorPopup extends PopupPanel {
-    
-    public static ErrorPopup instance = null;
-    
-    Label errorMessage = new Label();
-    Panel panel = new HorizontalPanel();
-    Button ok = new Button("OK");
-    
-    public ErrorPopup() {        
-        super(true);
-        panel.add( errorMessage );
-        panel.add( ok );
-        final PopupPanel self = this;
-        ok.addClickListener( new ClickListener() {
-            public void onClick(Widget arg0) {                
-                self.hide();
-            }            
-        });
-        this.add( panel );
-        this.setPopupPosition( 0, 0 );
-        setStyleName( "rule-error-Popup" );        
-    }
-    
-    public void setMessage(String message) {
-        errorMessage.setText( message );        
-    }
-    
-    public void hide() {
-        errorMessage.setText( "" );
-        super.hide();
-    }
-    
-    public static ErrorPopup getInstance() {
-        if (instance == null) {
-            instance = new ErrorPopup();
-        }
-        return instance;
-    }
-    
-    /** Convenience method to popup the message. */
-    public static void showMessage(String message) {
-        ErrorPopup p = getInstance();
-        p.errorMessage.setText( message );
-        p.show();
-    }
-    
-     
-    
-    
-}

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Search.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Search.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Search.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -15,6 +15,8 @@
  */
 package org.drools.brms.client;
 
+import org.drools.brms.client.common.SortableGrid;
+
 import com.google.gwt.user.client.ui.FlexTable;
 import com.google.gwt.user.client.ui.HasHorizontalAlignment;
 import com.google.gwt.user.client.ui.Image;
@@ -40,33 +42,98 @@
     };
   }
 
-  private Grid inner = new Grid(10, 5);
-  private FlexTable outer = new FlexTable();
 
   public Search() {
-    outer.setWidget(0, 0, new Image("rembrandt/LaMarcheNocturne.jpg"));
-    outer.getFlexCellFormatter().setColSpan(0, 0, 2);
-    outer.getFlexCellFormatter().setHorizontalAlignment(0, 0,
-      HasHorizontalAlignment.ALIGN_CENTER);
-
-    outer.setHTML(1, 0, "Look to the right...<br>"
-      + "That's a nested table component ->");
-    outer.setWidget(1, 1, inner);
-    ((FlexTable.FlexCellFormatter) outer.getCellFormatter())
-      .setColSpan(1, 1, 2);
-
-    for (int i = 0; i < 10; ++i) {
-      for (int j = 0; j < 5; ++j)
-        inner.setText(i, j, "" + i + "," + j);
-    }
-
-    inner.setWidth("100%");
-    outer.setWidth("100%");
-
-    inner.setBorderWidth(1);
-    outer.setBorderWidth(1);
-
-    setWidget(outer);
+      
+      String[][] data = new String[][] {
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },                                        
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },                                        
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },                                        
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },                                        
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },  
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },
+                                        {"1", "rule", "another thing" },                                          
+      };
+      
+      SortableGrid grid = new SortableGrid(data, new String[] {"a","b","c"});
+      initWidget( grid );
   }
 
   public void onShow() {

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryEditor.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryEditor.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -1,6 +1,6 @@
 package org.drools.brms.client.categorynav;
 
-import org.drools.brms.client.ErrorPopup;
+import org.drools.brms.client.common.ErrorPopup;
 import org.drools.brms.client.rpc.RepositoryServiceFactory;
 
 import com.google.gwt.user.client.rpc.AsyncCallback;

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryExplorerWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryExplorerWidget.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategoryExplorerWidget.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -1,6 +1,6 @@
 package org.drools.brms.client.categorynav;
 
-import org.drools.brms.client.ErrorPopup;
+import org.drools.brms.client.common.ErrorPopup;
 import org.drools.brms.client.rpc.RepositoryServiceAsync;
 import org.drools.brms.client.rpc.RepositoryServiceFactory;
 
@@ -23,62 +23,89 @@
  * navigate the repository.
  * Uses the the {@link com.google.gwt.user.client.ui.Tree} widget.
  */
-public class CategoryExplorerWidget
-    extends Composite implements TreeListener
-    {
+public class CategoryExplorerWidget extends Composite
+    implements
+    TreeListener {
 
-     
-    
     private Tree                   navTreeWidget = new Tree();
-    private VerticalPanel          panel = new VerticalPanel();
+    private VerticalPanel          panel         = new VerticalPanel();
     private RepositoryServiceAsync service       = RepositoryServiceFactory.getService();
     private CategorySelectHandler  categorySelectHandler;
-    private String selectedPath;
+    private String                 selectedPath;
 
     public void setTreeSize(String width) {
         navTreeWidget.setWidth( width );
     }
 
+    /**
+     * Creates a category widget with edit buttons enabled.
+     * @param handler A call back interface.
+     */
     public CategoryExplorerWidget(CategorySelectHandler handler) {
+        this( handler,
+              true );
+    }
+
+    /**
+     * 
+     * @param handler
+     * @param showEditing true if you want to be able to edit categories.
+     */
+    public CategoryExplorerWidget(CategorySelectHandler handler,
+                                  boolean showEditing) {
         panel.add( navTreeWidget );
-        
-        
-        Image refresh = new Image("images/refresh.gif");
-        refresh.setTitle( "Refresh categories" );        
+
+        if ( showEditing ) {
+            doEditButtons();
+        }
+        this.categorySelectHandler = handler;
+        loadInitialTree();
+
+        initWidget( panel );
+        navTreeWidget.addTreeListener( this );
+    }
+
+    private void doEditButtons() {
+        FlexTable actionTable = new FlexTable();
+        FlexCellFormatter formatter = actionTable.getFlexCellFormatter();
+
+        actionTable.setStyleName( "global-Font" );
+        actionTable.setText( 0,
+                             0,
+                             "Manage categories:" );
+
+        Image refresh = new Image( "images/refresh.gif" );
+        refresh.setTitle( "Refresh categories" );
         refresh.addClickListener( new ClickListener() {
             public void onClick(Widget w) {
                 navTreeWidget.removeItems();
                 loadInitialTree();
-            }            
-        });
-                
-        Image newCat = new Image("images/new.gif");
+            }
+        } );
+
+        Image newCat = new Image( "images/new.gif" );
         newCat.setTitle( "Create a new category" );
         newCat.addClickListener( new ClickListener() {
             public void onClick(Widget w) {
-                CategoryEditor newCat = new CategoryEditor(selectedPath);
-                newCat.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() - 10  );
+                CategoryEditor newCat = new CategoryEditor( selectedPath );
+                newCat.setPopupPosition( w.getAbsoluteLeft(),
+                                         w.getAbsoluteTop() - 10 );
                 newCat.show();
-            }            
-        });
-        
-        FlexTable actionTable = new FlexTable();
-        FlexCellFormatter formatter = actionTable.getFlexCellFormatter();
-        
-        actionTable.setStyleName( "global-Font" );
-        actionTable.setText( 0, 0, "Manage categories:" );
-        actionTable.setWidget( 0, 1, newCat );
-        actionTable.setWidget( 0, 2, refresh );
-        formatter.setAlignment( 0, 0, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_MIDDLE );
+            }
+        } );
 
+        actionTable.setWidget( 0,
+                               1,
+                               newCat );
+        actionTable.setWidget( 0,
+                               2,
+                               refresh );
+        formatter.setAlignment( 0,
+                                0,
+                                HasHorizontalAlignment.ALIGN_RIGHT,
+                                HasVerticalAlignment.ALIGN_MIDDLE );
+
         panel.add( actionTable );
-        
-        this.categorySelectHandler = handler;
-        loadInitialTree();
-        
-        
-        initWidget( panel );
-        navTreeWidget.addTreeListener( this );
     }
 
     /** This will refresh the tree and restore it back to the original state */
@@ -87,7 +114,7 @@
         service.loadChildCategories( "/",
                                      new AsyncCallback() {
 
-                                         public void onFailure(Throwable caught) {                                             
+                                         public void onFailure(Throwable caught) {
                                              ErrorPopup.showMessage( "A server error occurred loading categories." );
                                              navTreeWidget.removeItems();
                                              navTreeWidget.addItem( "Unable to load categories." );
@@ -105,20 +132,16 @@
 
                                      } );
 
-        
     }
-    
-    
 
     public void onShow() {
         //move along... these are not the droids you're looking for...
     }
 
     public void onTreeItemSelected(TreeItem item) {
-        this.selectedPath = getPath( item );        
+        this.selectedPath = getPath( item );
         this.categorySelectHandler.selected( selectedPath );
     }
-    
 
     public void onTreeItemStateChanged(TreeItem item) {
 
@@ -137,7 +160,7 @@
                                      new AsyncCallback() {
 
                                          public void onFailure(Throwable caught) {
-                                             ErrorPopup.showMessage( "Unable to load categories for [" + selectedPath + "]");            
+                                             ErrorPopup.showMessage( "Unable to load categories for [" + selectedPath + "]" );
                                          }
 
                                          public void onSuccess(Object result) {

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategorySelectHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategorySelectHandler.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/categorynav/CategorySelectHandler.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -2,8 +2,8 @@
 
 /**
  * This represents an event of a category being selected.
+ * This means the category widget can be used in several different places.
  * @author Michael Neale
- *
  */
 public interface CategorySelectHandler {
 

Copied: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup.java (from rev 6716, labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ErrorPopup.java)
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ErrorPopup.java	2006-10-10 10:13:27 UTC (rev 6716)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -0,0 +1,68 @@
+package org.drools.brms.client.common;
+
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+
+/** 
+ * Generic error dialog popup.
+ * This is a lazy singleton, only really need one to be shown at time. 
+ */
+public class ErrorPopup extends PopupPanel {
+    
+    public static ErrorPopup instance = null;
+    
+    Label errorMessage = new Label();
+    Panel panel = new HorizontalPanel();
+    Button ok = new Button("OK");
+    
+    public ErrorPopup() {        
+        super(true);
+        panel.add( errorMessage );
+        panel.add( ok );
+        final PopupPanel self = this;
+        ok.addClickListener( new ClickListener() {
+            public void onClick(Widget arg0) {                
+                self.hide();
+            }            
+        });
+        this.add( panel );
+        this.setPopupPosition( 0, 0 );
+        setStyleName( "rule-error-Popup" );        
+    }
+    
+    public void setMessage(String message) {
+        errorMessage.setText( message );        
+    }
+    
+    public void hide() {
+        errorMessage.setText( "" );
+        super.hide();
+    }
+    
+    public static ErrorPopup getInstance() {
+        if (instance == null) {
+            instance = new ErrorPopup();            
+        }
+        return instance;
+    }
+    
+    /** Convenience method to popup the message. */
+    public static void showMessage(String message) {
+        ErrorPopup p = getInstance();
+        
+        p.errorMessage.setText( message );
+        p.show();
+    }
+    
+
+    
+     
+    
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/ErrorPopup.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: 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	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/RulePackageSelector.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -0,0 +1,46 @@
+package org.drools.brms.client.common;
+
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.ListBox;
+
+/**
+ * A rule package selector widget.
+ * @author michael neale 
+ */
+public class RulePackageSelector extends Composite {
+
+    private ListBox packageList;
+    
+    public RulePackageSelector() {
+        packageList = new ListBox();
+        
+        RepositoryServiceFactory.getService().listRulePackages( new AsyncCallback() {
+
+            public void onFailure(Throwable arg0) {
+                ErrorPopup.showMessage( "Unable to load list of packages." );                
+            }
+
+            public void onSuccess(Object o) {
+                String[] list = (String[]) o;
+                for ( int i = 0; i < list.length; i++ ) {
+                    packageList.addItem( list[i] );
+                }
+                
+            }
+            
+        });
+        
+        initWidget( packageList );
+    }
+    
+    /**
+     * Returns the selected package.
+     */
+    public String getSelectedPackage() {
+        return packageList.getItemText( packageList.getSelectedIndex() );
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/RulePackageSelector.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/SortableGrid.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/SortableGrid.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/SortableGrid.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -0,0 +1,59 @@
+package org.drools.brms.client.common;
+
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.ScrollPanel;
+
+/**
+ * This is the grid widget wrapper.
+ * Main features are that it works off a data model, and 
+ *
+ */
+public class SortableGrid extends Composite {
+
+    ScrollPanel panel;
+    FlexTable   table = new FlexTable();
+    
+    
+    /**
+     * @param data The first column is the key. The rest are the displayed data.
+     * @param header This is obviously the header !
+     */
+    public SortableGrid(String[][] data, String[] header) {
+        panel = new ScrollPanel();
+        header( header );
+        
+        panel.setHeight( "50%" );
+        data( data );
+        
+        panel.setScrollPosition( 50 );
+        panel.setAlwaysShowScrollBars( true );
+        panel.add( table );
+        table.setWidth( "100%" );
+        initWidget( panel );        
+    }
+
+
+    private void data(String[][] data) {
+        for ( int i = 0; i < data.length; i++ ) {
+            String[] row = data[i];
+            int rowNumber = i + 1;
+            table.setText( rowNumber, 0, row[0] );
+            for ( int j = 1; j < row.length; j++ ) {
+                table.setText( rowNumber, j, row[j] );
+            }
+        }
+    }
+
+
+    private void header(String[] header) {
+        for ( int i = 0; i < header.length; i++ ) {
+            Label head = new Label(header[i]);           
+            table.setWidget( 0, i, head );          
+        }
+    }
+    
+    
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/SortableGrid.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/WarningPopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/WarningPopup.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/WarningPopup.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -0,0 +1,60 @@
+package org.drools.brms.client.common;
+
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+
+/** 
+ * Generic warning message popup.
+ * This is also applicable for input validation messages.
+ */
+public class WarningPopup extends PopupPanel {
+    
+    Label errorMessage = new Label();
+    Panel panel = new HorizontalPanel();
+    Button ok = new Button("OK");
+    
+    public WarningPopup(int x, int y) {        
+        super(true);
+        this.setPopupPosition( x, y );
+        panel.add( errorMessage );
+        panel.add( ok );
+        final PopupPanel self = this;
+        ok.addClickListener( new ClickListener() {
+            public void onClick(Widget arg0) {                
+                self.hide();
+            }            
+        });
+        this.add( panel );
+        this.setStyleName( "rule-warning-Popup" );
+    }
+    
+    public void setMessage(String message) {
+        errorMessage.setText( message );        
+    }
+    
+    public void hide() {
+        errorMessage.setText( "" );
+        super.hide();
+    }
+    
+
+    
+    /** Convenience method to popup the message in the given position. */
+    public static void showMessage(String message, int x, int y) {
+        WarningPopup p = new WarningPopup(x, y);       
+        p.errorMessage.setText( message );
+        p.show();
+    }
+    
+
+    
+     
+    
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/WarningPopup.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -32,4 +32,14 @@
      * This will create a new category at the specified path.
      */
     public Boolean createCategory(String path, String name, String description);
+    
+    /**
+     * Creates a brand new rule with the initial category.
+     */
+    public Boolean createNewRule(String ruleName, String description, String initialCategory, String initialPackage);
+    
+    /**
+     * This returns a list of packages where rules may be added.
+     */
+    public String[] listRulePackages();
 }

Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -1,36 +0,0 @@
-package org.drools.brms.client.rpc;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-/** 
- * This is the interface that the front end talks to.
- * 
- * As per the GWT standard, this follows the signatures of <code>RespositoryService</code>
- * with the AsyncCallback banged on the end of the method sigs (rather then return a value).
- * 
- * @author Michael Neale
- */
-public interface RepositoryServiceAsync {
-
-    /**
-     * @param categoryPath A "/" delimited path to a category. 
-     * @param callback
-     */
-    public void loadChildCategories(String categoryPath, AsyncCallback callback);
- 
-    
-    /**
-     * Return a a 2d array/grid of results for rules.
-     * @param A "/" delimited path to a category.
-     * @param status The status flag. Leave blank to be all.
-     */
-    public void loadRuleListForCategories(String categoryPath, String status, AsyncCallback callback);
-    
-    /**
-     * This will return a TableConfig of header names.
-     * @param listName The name of the list that we are going to render.
-     */
-    public void loadTableConfig(String listName, AsyncCallback callback);
-    
-    public void createCategory(String path, String name, String description, AsyncCallback callback);
-}

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/interfacegen.rb
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/interfacegen.rb	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/interfacegen.rb	2006-10-17 11:20:19 UTC (rev 6849)
@@ -0,0 +1,38 @@
+#
+# This is a utility script for generating the Async component of a GWT RPC service.
+# You define the normal service, and then point this at it,
+# and it will generate the Async service (keeping everything nice and in sync).
+#
+# (c) Michael Neale
+#
+
+
+OUTPUT = "RepositoryServiceAsync.java"
+INPUT = "RepositoryService.java"
+
+
+interface = IO.read(INPUT)
+output = ""
+interface.each_line { |line|
+ groups = line.scan /\s+public\s+(.*?)\s+(.*?)\)\;\s*/
+ if groups.size > 0 then 
+	 if groups[0][0] == 'interface' then
+		output = output + "\n" + line
+ 	else 
+        	output = output + "\n" + "        public void " + groups[0][1] + ', AsyncCallback callback);'
+ 	end
+ else 
+	output = output + "\n" + line
+
+ end
+
+
+}
+
+if File.exists? OUTPUT then File.delete(OUTPUT) end
+
+f = File.new(OUTPUT, "w")
+f.write output
+f.close
+
+


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/interfacegen.rb
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -5,6 +5,7 @@
 
 import com.google.gwt.user.client.Timer;
 import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.rpc.SerializableException;
 
 /**
  * This is a repository back end simulator. 
@@ -86,4 +87,32 @@
         
     }
 
+
+
+    public void createNewRule(String name,
+                           String description,
+                           String initialCategory, String initialPackage, AsyncCallback callback) {
+        
+        System.out.println("creating rule:" + name);
+        System.out.println("creating rule description:" + description);
+        System.out.println("creating rule initialCategory:" + initialCategory);
+        System.out.println("creating rule initialPackage:" + initialPackage);
+        
+        if (name.equals( "foo" )) {
+            callback.onFailure( new SerializableException("thats naughty") );
+        } else {
+            callback.onSuccess( new Boolean(true) );
+        }
+        
+        
+    }
+
+
+
+    public void listRulePackages(AsyncCallback callback) {
+        callback.onSuccess( new String[] {"a package"} );        
+    }
+    
+    
+
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/NewRuleWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/NewRuleWizard.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/NewRuleWizard.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -1,5 +1,13 @@
 package org.drools.brms.client.ruleeditor;
 
+import org.drools.brms.client.categorynav.CategoryExplorerWidget;
+import org.drools.brms.client.categorynav.CategorySelectHandler;
+import org.drools.brms.client.common.ErrorPopup;
+import org.drools.brms.client.common.RulePackageSelector;
+import org.drools.brms.client.common.WarningPopup;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.FlexTable;
@@ -11,67 +19,129 @@
 import com.google.gwt.user.client.ui.Widget;
 
 /**
- * This provides a popup for editing a category (name etc).
- * Mainly this is for creating a new category.
+ * This provides a popup for creating a new rule from scratch.
+ * reuses a few other widgets.
  */
 public class NewRuleWizard extends PopupPanel {
 
+    private FlexTable              table       = new FlexTable(); //Using this table for the form layout
+    private TextBox                name        = new TextBox();
+    private TextArea               description = new TextArea();
+    private String                 initialCategory;
+    private CategoryExplorerWidget catChooser  = new CategoryExplorerWidget( new CategorySelectHandler() {
+                                                   public void selected(String selectedPath) {
+                                                       initialCategory = selectedPath;
+                                                   }
+                                               }, false );
+    private RulePackageSelector packageSelector = new RulePackageSelector();
 
-    private FlexTable table = new FlexTable(); //Using this table for the form layout
-    private TextBox name = new TextBox();
-    private TextArea description = new TextArea();
-    
-    
-    /** This is used when creating a new category */
+    /** This is used when creating a new rule. */
     public NewRuleWizard() {
-        super(true);
+        super( true );
         
-        table.setWidget( 0, 0, new Image("images/new_wiz.gif") );
+        super.setWidth( "60%" );
+        table.setWidth( "100%" );
+        name.setWidth( "100%" );
         
-        table.setWidget( 0, 1, new Label("Create a new rule"));
+        table.setWidget( 0,
+                         0,
+                         new Image( "images/new_wiz.gif" ) );
+        table.setWidget( 0,
+                         1,
+                         new Label( "Create a new rule" ) );        
+
+        table.setWidget( 1,
+                         0,
+                         new Label( "Rule name" ) );
+        table.setWidget( 1,
+                         1,
+                         name );
         
+        table.setWidget( 2, 0, new Label("Initial category") );
+        table.setWidget( 2, 1, catChooser );
         
-        table.setWidget( 1, 0, new Label("Rule name") );
-        table.setWidget( 1, 1, name );
-        
+        table.setWidget( 3, 0, new Label("Package") );
+        table.setWidget( 3, 1, packageSelector );
+
         description.setVisibleLines( 4 );
         description.setWidth( "100%" );
-        table.setWidget( 2, 0, new Label("Initial Description") );
-        table.setWidget( 2, 1, description );
-        
-        Button ok = new Button("OK");
+        table.setWidget( 4,
+                         0,
+                         new Label( "Initial Description" ) );
+        table.setWidget( 4,
+                         1,
+                         description );
+
+        Button ok = new Button( "OK" );
         ok.addClickListener( new ClickListener() {
             public void onClick(Widget arg0) {
                 ok();
             }
-            
-        });
-        
-        table.setWidget( 3, 0, ok );
-        
-        Button cancel = new Button("Cancel");
+
+        } );
+
+        table.setWidget( 5,
+                         0,
+                         ok );
+
+        Button cancel = new Button( "Cancel" );
         cancel.addClickListener( new ClickListener() {
             public void onClick(Widget w) {
-                cancel();                
+                cancel();
             }
-            
-        });
-        
-        table.setWidget( 3, 1, cancel );
-        
+
+        } );
+
+        table.setWidget( 5,
+                         1,
+                         cancel );
+
         add( table );
         setStyleName( "ks-popups-Popup" );
     }
 
-
-    
+    /**
+     * When OK is pressed, it will update the repository with the new rule.
+     */
     void ok() {
         
-        hide();
+        if (this.initialCategory == null) {            
+            WarningPopup.showMessage( "You have to pick an initial category.", this.getAbsoluteLeft(), this.getAbsoluteTop() );
+            return;
+        } else if (this.name.getText() == null || "".equals( this.name.getText() )) {
+            WarningPopup.showMessage( "Rule must have a name", this.getAbsoluteLeft(), this.getAbsoluteTop() );
+            return;
+        }
+        
+        AsyncCallback cb = new AsyncCallback() {
+
+            public void onFailure(Throwable err) {
+                ErrorPopup.showMessage( err.getMessage() );
+            }
+
+            public void onSuccess(Object result) {
+                if ( ((Boolean) result).booleanValue() ) {
+                    hide();
+                } else {
+                    ErrorPopup.showMessage( "Unable to create the rule." );
+                }
+            }
+        };
+
+        if ( this.name.equals( "" ) ) {
+            ErrorPopup.showMessage( "Can't have an empty category name." );
+        } else {
+            RepositoryServiceFactory.getService().createNewRule( name.getText(),
+                                                              description.getText(),
+                                                              initialCategory,
+                                                              packageSelector.getSelectedPackage(),
+                                                              cb );
+
+        }
     }
-    
+
     void cancel() {
         hide();
     }
-    
+
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleDocumentWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleDocumentWidget.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleDocumentWidget.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -16,10 +16,10 @@
 	public RuleDocumentWidget(String content) {
 		text = new TextArea();
         text.setVisibleLines( 10 );
-		//text.setWidth("100%");
-		//text.setHeight("100%");
 		text.setText(content);
         text.setStyleName( "rule-viewer-Documentation" );
+        
+        
 		initWidget(text);
 	}
 	

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2006-10-17 11:20:19 UTC (rev 6849)
@@ -176,6 +176,7 @@
 	font-size: smaller;
 }
 
+
 /* -------------------------------------------------------------------------- */
 
 /* -- orig border: #C3D9FF  replaced with #B8B8B8 
@@ -241,7 +242,7 @@
 }
 
 .ks-popups-Popup {
-  background-color: white;
+  background-color: #FDFCDC;
   border: 1px solid #87B3FF;
   padding: 4px;
 }
@@ -252,6 +253,12 @@
   padding: 4px;
 }
 
+.rule-warning-Popup {
+  background-color: yellow;
+  border: 1px solid #87B3FF;
+  padding: 4px;
+}
+
 .rule-breditor-Table {
   background-color: #FDFCDC;
   border: 1px solid #87B3FF;
@@ -303,7 +310,8 @@
   background-color: #FDFCDC;
   font-family: Arial, sans-serif;
   font-size: smaller;
-  width: 70%;
+  border: 1px solid #87B3FF;
+  width: 100%;
 }
 
 .rule-ListHeader {

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/validation_error.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/validation_error.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -1,5 +1,9 @@
 package org.drools.brms.server;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 import javax.jcr.LoginException;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
@@ -8,7 +12,10 @@
 
 import org.drools.brms.client.rpc.RepositoryService;
 import org.drools.brms.client.rpc.TableConfig;
+import org.drools.repository.CategoryItem;
 import org.drools.repository.RepositoryConfigurator;
+import org.drools.repository.RuleItem;
+import org.drools.repository.RulePackageItem;
 import org.drools.repository.RulesRepository;
 
 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
@@ -28,14 +35,58 @@
      * The shared repository instance. This could be bound to JNDI eventually.
      */
     public static Repository repository;
+
     
-    public String[] loadChildCategories(String categoryPath) {   
-        ServiceImpl handler = new ServiceImpl(getRulesRepository());
-        return handler.loadChildCategories( categoryPath );
+    public String[] loadChildCategories(String categoryPath) {
+
+        CategoryItem item = getRulesRepository().loadCategory( categoryPath );
+        List children = item.getChildTags();
+        String[] list = new String[children.size()];
+        for ( int i = 0; i < list.length; i++ ) {
+            list[i] = ((CategoryItem) children.get( i )).getName();
+        }
+        return list;
+
     }
 
+    public Boolean createCategory(String path,
+                                  String name,
+                                  String description) {
+        
+        if (path == null || "".equals(path)) {
+            path = "/";
+        }
+        CategoryItem item = getRulesRepository().loadCategory( path );
+        item.addCategory( name, description );
+        return Boolean.TRUE;
+    }
+    
+    
+    public Boolean createNewRule(String ruleName,
+                                 String description,
+                                 String initialCategory,
+                                 String initialPackage) {
+        RulePackageItem pkg = getRulesRepository().loadRulePackage( initialPackage );
+        RuleItem rule = pkg.addRule( ruleName, description );
+        rule.addCategory( initialCategory );
+        
+        return Boolean.TRUE;
+    }
 
+    public String[] listRulePackages() {
+        Iterator pkgs = getRulesRepository().listPackages();
+        List result = new ArrayList();
+        while(pkgs.hasNext()) {
+            RulePackageItem pkg = (RulePackageItem) pkgs.next();
+            result.add( pkg.getName() );
+        }
+        return (String[]) result.toArray( new String[result.size()] );
+    }
+    
 
+
+
+
     public String[][] loadRuleListForCategories(String categoryPath,
                                                 String status) {
         log( "loading rule list",
@@ -63,7 +114,7 @@
     }
     
     /** Get the rule repository for the "current" user */
-    private RulesRepository getRulesRepository() {
+    RulesRepository getRulesRepository() {
         return this.getRepositoryFrom( getSession() );
     }
 
@@ -134,14 +185,5 @@
     
     
 
-    public Boolean createCategory(String path,
-                                  String name,
-                                  String description) {
-        ServiceImpl serv = new ServiceImpl(getRulesRepository());
-        return serv.createCategory( path, name, description );
-        
-    }
 
-
-
 }

Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImpl.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImpl.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -1,62 +0,0 @@
-package org.drools.brms.server;
-
-import java.util.List;
-
-import org.drools.brms.client.rpc.RepositoryService;
-import org.drools.brms.client.rpc.TableConfig;
-import org.drools.repository.CategoryItem;
-import org.drools.repository.RulesRepository;
-
-/**
- * This contains the "glue" between the servlet implementation
- * (which is GWT specific) and the repository api.
- * This is mainly to make things more testable.
- * 
- * It will be "injected" a RulesRepository implementation.
- * 
- * @author Michael Neale
- */
-public class ServiceImpl implements RepositoryService {
-
-    private RulesRepository repo;
-
-    public ServiceImpl(RulesRepository repository) {
-        this.repo = repository;
-    }
-    
-    public String[] loadChildCategories(String categoryPath) {
-
-        CategoryItem item = repo.loadCategory( categoryPath );
-        List children = item.getChildTags();
-        String[] list = new String[children.size()];
-        for ( int i = 0; i < list.length; i++ ) {
-            list[i] = ((CategoryItem) children.get( i )).getName();
-        }
-        return list;
-
-    }
-
-    public Boolean createCategory(String path,
-                                  String name,
-                                  String description) {
-        
-        if (path == null || "".equals(path)) {
-            path = "/";
-        }
-        CategoryItem item = repo.loadCategory( path );
-        item.addCategory( name, description );
-        return Boolean.TRUE;
-    }
-
-    public String[][] loadRuleListForCategories(String categoryPath,
-                                                String status) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public TableConfig loadTableConfig(String listName) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-}

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/JBRMSServiceServletTest.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -13,6 +13,9 @@
 
 import org.drools.repository.RulesRepository;
 
+/**
+ * This tests the basic http stuff for the servlet.
+ */
 public class JBRMSServiceServletTest extends TestCase {
 
     public void testInit() throws Exception {

Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/MockJBRMSServiceServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/MockJBRMSServiceServlet.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/MockJBRMSServiceServlet.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -0,0 +1,24 @@
+package org.drools.brms.server;
+
+import org.drools.repository.RulesRepository;
+
+/**
+ * This isn't really a mock, it just stubs out enough so I can test it from the servlet
+ * down - at least the non servlet specific stuff.
+ * 
+ * @author michael neale.
+ *
+ */
+public class MockJBRMSServiceServlet extends JBRMSServiceServlet {
+
+    RulesRepository repo;
+
+    public MockJBRMSServiceServlet() throws Exception  {
+        repo = new RulesRepository(SessionHelper.getSession());        
+    }
+    
+    RulesRepository getRulesRepository() {        
+        return repo;
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/MockJBRMSServiceServlet.java
___________________________________________________________________
Name: svn:eol-style
   + native

Deleted: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplTest.java	2006-10-17 10:32:41 UTC (rev 6848)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplTest.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -1,36 +0,0 @@
-package org.drools.brms.server;
-
-import org.drools.repository.RulesRepository;
-
-import junit.framework.TestCase;
-
-public class ServiceImplTest extends TestCase {
-
-  public void testCategory() throws Exception {
-        ServiceImpl impl = new ServiceImpl(new RulesRepository(SessionHelper.getSession()));
-
-        String[] originalCats = impl.loadChildCategories( "/" );
-        
-        Boolean result = impl.createCategory( "/",
-                                              "TopLevel1",
-                                              "a description" );
-        assertTrue( result.booleanValue() );
-
-        result = impl.createCategory( "/",
-                                      "TopLevel2",
-                                      "a description" );
-        assertTrue( result.booleanValue() );
-        
-        String[] cats = impl.loadChildCategories( "/" );
-        assertTrue( cats.length == originalCats.length + 2 );
-        
-        result = impl.createCategory( "", "Top3", "description" );
-        assertTrue(result.booleanValue());
-        
-        result = impl.createCategory( null, "Top4", "description" );
-        assertTrue(result.booleanValue());
-        
-
-    }
-    
-}

Copied: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java (from rev 6716, labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplTest.java	2006-10-10 10:13:27 UTC (rev 6716)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java	2006-10-17 11:20:19 UTC (rev 6849)
@@ -0,0 +1,69 @@
+package org.drools.brms.server;
+
+import junit.framework.TestCase;
+
+import org.drools.brms.client.rpc.RepositoryService;
+import org.drools.repository.CategoryItem;
+
+public class ServiceImplementationTest extends TestCase {
+
+  public void testCategory() throws Exception {
+        //ServiceImpl impl = new ServiceImpl(new RulesRepository(SessionHelper.getSession()));
+
+        RepositoryService impl = new MockJBRMSServiceServlet();
+      
+        String[] originalCats = impl.loadChildCategories( "/" );
+        
+        Boolean result = impl.createCategory( "/",
+                                              "TopLevel1",
+                                              "a description" );
+        assertTrue( result.booleanValue() );
+
+        result = impl.createCategory( "/",
+                                      "TopLevel2",
+                                      "a description" );
+        assertTrue( result.booleanValue() );
+        
+        String[] cats = impl.loadChildCategories( "/" );
+        assertTrue( cats.length == originalCats.length + 2 );
+        
+        result = impl.createCategory( "", "Top3", "description" );
+        assertTrue(result.booleanValue());
+        
+        result = impl.createCategory( null, "Top4", "description" );
+        assertTrue(result.booleanValue());
+        
+
+    }
+  
+  public void testAddRuleAndListPackages() throws Exception {
+      //ServiceImpl impl = new ServiceImpl(new RulesRepository(SessionHelper.getSession()));
+      
+      MockJBRMSServiceServlet impl = new MockJBRMSServiceServlet();
+      
+      impl.repo.loadDefaultRulePackage();
+      impl.repo.createRulePackage( "another", "woot" );
+      
+      
+      CategoryItem cat = impl.repo.loadCategory( "/" );
+      cat.addCategory( "testAddRule", "yeah" );
+      
+      
+      Boolean result = impl.createNewRule( "testAddRule", "a description", "testAddRule", "another" );
+      assertTrue(result.booleanValue());
+      
+      String[] packages = impl.listRulePackages();
+      assertTrue(packages.length > 0);
+      
+      boolean found = false;
+      for ( int i = 0; i < packages.length; i++ ) {
+          if (packages[i].equals( "another" )) {
+              found = true;
+          }
+      }
+      assertTrue(found);
+      
+  }
+
+    
+}




More information about the jboss-svn-commits mailing list