[jboss-svn-commits] JBL Code SVN: r28890 - in labs/jbossrules/soa_branches/BRMS-5.0.1: drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven and 10 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Aug 10 11:13:37 EDT 2009


Author: jervisliu
Date: 2009-08-10 11:13:37 -0400 (Mon, 10 Aug 2009)
New Revision: 28890

Added:
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/resources/jarWithSourceFiles.jar
Modified:
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/common/FormStylePopup.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/qa/ScenarioWidget.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/BRMSPackageBuilder.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/files/FeedServlet.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/files/FileManagerUtils.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/resources/atom-feed-template.xml
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPRequest.java
Log:
Merged necessary files from trunk to BRMS 5.0.1 branch for following JIRAs: Guvnor-323, Guvnor-299, Guvnor-361, Guvnor-322, Guvnor-327, Guvnor-344, Guvnor-345, Guvnor-367. Merge details can be found from merge log below:  

svn merge -r 26591:26943 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/BRMSPackageBuilder.java

svn merge -r 26591:26943 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/src/test/resources
A    jarWithSourceFiles.jar

svn merge -r 26591:26803 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/FileManagerUtils.java

svn merge -r 26591:26801 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/FeedServlet.java

svn merge -r 26591:26801 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPRequest.java

svn merge -r 26591:26801 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/src/main/resources/atom-feed-template.xml

svn merge -r 26591:26947 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java

svn merge -r 26591:26947 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java

svn merge -r 26591:26774 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java

svn merge -r 26591:26774 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java

svn merge -r 26591:26759 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/qa/ScenarioWidget.java

svn merge -r 26591:26759 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/FormStylePopup.java

svn merge -r 26591:27011 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java

svn merge -r 26591:27011 https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java	2009-08-10 15:13:37 UTC (rev 28890)
@@ -275,23 +275,40 @@
 
         if ( pat.constraintList != null && pat.constraintList.constraints != null ) {
             // we may need to check for data dependent enums
-            Object _typeField = dataEnumLookupFields.get( pat.factType + "." + field );
-            if ( _typeField instanceof String ) {
-                String typeField = (String) _typeField;
+            Object _typeFields = dataEnumLookupFields.get( pat.factType + "." + field );
+            if ( _typeFields instanceof String ) {
+                String typeFields = (String) _typeFields;
                 FieldConstraint[] cons = pat.constraintList.constraints;
-                for ( int i = 0; i < cons.length; i++ ) {
-                    FieldConstraint con = cons[i];
-                    if ( con instanceof SingleFieldConstraint ) {
-                        SingleFieldConstraint sfc = (SingleFieldConstraint) con;
-                        if ( sfc.fieldName.equals( typeField ) ) {
-                            String key = pat.factType + "." + field + "[" + typeField + "=" + sfc.value + "]";
-                            return DropDownData.create( (String[]) this.dataEnumLists.get( key ) );
+
+                String key = pat.factType + "." + field + "[";
+
+                String[] splitTypeFields = typeFields.split( "," );
+                for ( int j = 0; j < splitTypeFields.length; j++ ) {
+                    String typeField = splitTypeFields[j];
+
+                    for ( int i = 0; i < cons.length; i++ ) {
+                        FieldConstraint con = cons[i];
+                        if ( con instanceof SingleFieldConstraint ) {
+                            SingleFieldConstraint sfc = (SingleFieldConstraint) con;
+
+                            if ( sfc.fieldName.trim().equals( typeField.trim() ) ) {
+                                key += typeField + "=" + sfc.value;
+
+                                if ( j != (splitTypeFields.length - 1) ) {
+                                    key += ",";
+                                }
+                            }
                         }
                     }
                 }
-            } else if ( _typeField != null ) {
+
+                key += "]";
+
+                return DropDownData.create( (String[]) this.dataEnumLists.get( key ) );
+            
+            } else if ( _typeFields != null ) {
                 // these enums are calculated on demand, server side...
-                String[] fieldsNeeded = (String[]) _typeField;
+                String[] fieldsNeeded = (String[]) _typeFields;
                 String queryString = getQueryString( pat.factType,
                                                      field,
                                                      this.dataEnumLists );
@@ -410,8 +427,18 @@
                     String predicate = key.substring( ix + 1,
                                                       key.indexOf( ']' ) );
                     if ( predicate.indexOf( '=' ) > -1 ) {
-                        String typeField = predicate.substring( 0,
-                                                                predicate.indexOf( '=' ) );
+                        
+                        String[] bits = predicate.split( "," );
+                        String typeField = "";
+
+                        for ( int i = 0; i < bits.length; i++ ) {
+                            typeField += bits[i].substring( 0,
+                                                            bits[i].indexOf( '=' ) );
+                            if ( i != (bits.length - 1) ) {
+                                typeField += ",";
+                            }
+                        }
+ 
                         dataEnumLookupFields.put( factField,
                                                   typeField );
                     } else {

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java	2009-08-10 15:13:37 UTC (rev 28890)
@@ -275,7 +275,67 @@
     	assertNull(sce.getEnums("Nothing", vals, "value"));
 
     }
+    
+    public void testSmartEnumsDependingOfSeveralFieldsTwo() {
+        final SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
+        sce.dataEnumLists = new HashMap();
+        sce.dataEnumLists.put("Fact.field1", new String[] {"a1", "a2"});
+        sce.dataEnumLists.put("Fact.field2", new String[] {"b1", "b2"});
+        sce.dataEnumLists.put("Fact.field3[field1=a1,field2=b1]", new String[] {"c1","c2","c3"});
+        sce.dataEnumLists.put("Fact.field4[field1=a1]", new String[] {"d1", "d2"});
+        
+        FactPattern pat = new FactPattern("Fact");
+        SingleFieldConstraint sfc = new SingleFieldConstraint("field1");
+        sfc.value = "a1";
+        pat.addConstraint(sfc);
+        SingleFieldConstraint sfc2 = new SingleFieldConstraint("field2");
+        sfc2.value = "b1";
+        pat.addConstraint(sfc2);
+        
+        String[] result = sce.getEnums(pat, "field3").fixedList;
+        assertEquals(3, result.length);
+        assertEquals("c1", result[0]);
+        assertEquals("c2", result[1]);
+        assertEquals("c3", result[2]);
 
+    }
+    
+    public void testSmartEnumsDependingOfSeveralFieldsFive() {
+        final SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
+        sce.dataEnumLists = new HashMap();
+        sce.dataEnumLists.put("Fact.field1", new String[] {"a1", "a2"});
+        sce.dataEnumLists.put("Fact.field2", new String[] {"b1", "b2"});
+        sce.dataEnumLists.put("Fact.field3", new String[] {"c1","c2","c3"});
+        sce.dataEnumLists.put("Fact.longerField4", new String[] {"d1", "d2"});
+        sce.dataEnumLists.put("Fact.field5", new String[] {"e1", "e2"});
+        sce.dataEnumLists.put("Fact.field6[field1=a1, field2=b2, field3=c3,longerField4=d1,field5=e2]", new String[] {"f1", "f2"});
+        
+        FactPattern pat = new FactPattern("Fact");
+        SingleFieldConstraint sfc = new SingleFieldConstraint("field1");
+        sfc.value = "a1";
+        pat.addConstraint(sfc);
+        SingleFieldConstraint sfc2 = new SingleFieldConstraint("field2");
+        sfc2.value = "b2";
+        pat.addConstraint(sfc2);
+        SingleFieldConstraint sfc3 = new SingleFieldConstraint("field3");
+        sfc3.value = "c3";
+        pat.addConstraint(sfc3);
+        SingleFieldConstraint sfc4 = new SingleFieldConstraint("longerField4");
+        sfc4.value = "d1";
+        pat.addConstraint(sfc4);
+        
+        assertNull( sce.getEnums(pat, "field6") );
+
+        SingleFieldConstraint sfc5 = new SingleFieldConstraint("field5");
+        sfc5.value = "e2";
+        pat.addConstraint(sfc5);
+        
+        String[] result2 = sce.getEnums(pat, "field6").fixedList;
+        assertEquals(2, result2.length);
+        assertEquals("f1", result2[0]);
+        assertEquals("f2", result2[1]);
+    }
+
     public void testSmarterLookupEnums() {
     	final SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
     	sce.dataEnumLists = new HashMap();

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/common/FormStylePopup.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/common/FormStylePopup.java	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/common/FormStylePopup.java	2009-08-10 15:13:37 UTC (rev 28890)
@@ -80,6 +80,7 @@
     }
 
     public void hide() {
+        this.dialog.hide();
     	this.dialog.destroy();
     }
 

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/qa/ScenarioWidget.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/qa/ScenarioWidget.java	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/qa/ScenarioWidget.java	2009-08-10 15:13:37 UTC (rev 28890)
@@ -52,7 +52,7 @@
 
 public class ScenarioWidget extends Composite {
 
-	private ListBox availableRules;
+	private String[] availableRules;
 	private SuggestionCompletionEngine sce;
 	private ChangeListener ruleSelectionCL;
 	RuleAsset asset;
@@ -455,77 +455,83 @@
 
 	}
 
-
 	public Widget getRuleSelectionWidget(final String packageName, final RuleSelectionEvent selected) {
-		final HorizontalPanel h = new HorizontalPanel();
-		final TextBox t = new TextBox();
-		t.setTitle(constants.EnterRuleNameScenario());
-		h.add(t);
-		if (!(availableRules == null)) {
-			availableRules.setSelectedIndex(0);
-			availableRules.removeChangeListener(ruleSelectionCL);
-			ruleSelectionCL  = new ChangeListener() {
-				public void onChange(Widget w) {
-					t.setText(availableRules.getItemText(availableRules.getSelectedIndex()));
-				}
-			};
+	       final HorizontalPanel h = new HorizontalPanel();
+	       final TextBox t = new TextBox();
+	       t.setTitle(constants.EnterRuleNameScenario());
+	       h.add(t);
+	       if (!(availableRules == null)) {
+	           final ListBox availableRulesBox = new ListBox();
 
-			availableRules.addChangeListener(ruleSelectionCL);
-			h.add(availableRules);
+	           availableRulesBox.addItem(constants.pleaseChoose1());
+	           for (int i = 0; i < availableRules.length; i++) {
+	               availableRulesBox.addItem(availableRules[i]);
+	           }
+	                      availableRulesBox.setSelectedIndex(0);
+	           availableRulesBox.removeChangeListener(ruleSelectionCL);
+	           ruleSelectionCL  = new ChangeListener() {
+	               public void onChange(Widget w) {
+	                  t.setText(availableRulesBox.getItemText(availableRulesBox.getSelectedIndex()));
+	               }
+	           };
 
-		} else {
+	           availableRulesBox.addChangeListener(ruleSelectionCL);
+	           h.add(availableRulesBox);
 
-			final Button showList = new Button(constants.showListButton());
-			h.add(showList);
-			showList.addClickListener(new ClickListener() {
-				public void onClick(Widget w) {
-					h.remove(showList);
-					final Image busy = new Image("images/searching.gif"); //NON-NLS
-					final Label loading = new SmallLabel(constants.loadingList1());
-					h.add(busy);
-					h.add(loading);
+	       } else {
 
+	           final Button showList = new Button(constants.showListButton());
+	           h.add(showList);
+	           showList.addClickListener(new ClickListener() {
+	               public void onClick(Widget w) {
+	                   h.remove(showList);
+	                   final Image busy = new Image("images/searching.gif"); //NON-NLS
+	                   final Label loading = new SmallLabel(constants.loadingList1());
+	                   h.add(busy);
+	                   h.add(loading);
 
-					DeferredCommand.addCommand(new Command() {
-						public void execute() {
-							RepositoryServiceFactory.getService().listRulesInPackage(packageName, new GenericCallback<String[]>() {
-								public void onSuccess(String[] list) {
-									availableRules = new ListBox();
-									availableRules.addItem(constants.pleaseChoose1());
-									for (int i = 0; i < list.length; i++) {
-										availableRules.addItem(list[i]);
-									}
-									ruleSelectionCL  = new ChangeListener() {
-										public void onChange(Widget w) {
-											t.setText(availableRules.getItemText(availableRules.getSelectedIndex()));
-										}
-									};
-									availableRules.addChangeListener(ruleSelectionCL);
-									availableRules.setSelectedIndex(0);
-									h.add(availableRules);
-									h.remove(busy);
-									h.remove(loading);
-								}
-							});
-						}
-					});
 
+	                   DeferredCommand.addCommand(new Command() {
+	                       public void execute() {
+	                          RepositoryServiceFactory.getService().listRulesInPackage(packageName, new GenericCallback<String[]>() {
+	                               public void onSuccess(String[] list) {
+	                                   availableRules = (list);
+	                                   final ListBox availableRulesBox = new ListBox();
+	                                                                     availableRulesBox.addItem(constants.pleaseChoose1());
+	                                   for (int i = 0; i < list.length; i++) {
+	                                       availableRulesBox.addItem(list[i]);
+	                                   }
+	                                   ruleSelectionCL  = new ChangeListener() {
+	                                       public void onChange(Widget w) {
+	                                          t.setText(availableRulesBox.getItemText(availableRulesBox.getSelectedIndex()));
+	                                       }
+	                                   };
+	                                   availableRulesBox.addChangeListener(ruleSelectionCL);
+	                                   availableRulesBox.setSelectedIndex(0);
+	                                   h.add(availableRulesBox);
+	                                   h.remove(busy);
+	                                   h.remove(loading);
+	                               }
+	                           });
+	                       }
+	                   });
 
-				}
-			});
 
-		}
+	               }
+	           });
 
-		Button ok = new Button(constants.OK());
-		ok.addClickListener(new ClickListener() {
-			public void onClick(Widget w) {
-				selected.ruleSelected(t.getText());
-			}
-		});
-		h.add(ok);
-		return h;
-	}
+	       }
 
+	       Button ok = new Button(constants.OK());
+	       ok.addClickListener(new ClickListener() {
+	           public void onClick(Widget w) {
+	               selected.ruleSelected(t.getText());
+	           }
+	       });
+	       h.add(ok);
+	       return h;
+	   } 
+
 	public static Widget editableCell(final ValueChanged changeEvent, String factType, String fieldName, String initialValue, SuggestionCompletionEngine sce) {
 		String key  = factType + "." + fieldName;
 		String flType = sce.fieldTypes.get(key);

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2009-08-10 15:13:37 UTC (rev 28890)
@@ -162,7 +162,7 @@
      * Used for a simple cache of binary packages to avoid serialization from
      * the database - for test scenarios.
      */
-    static Map<String, RuleBase>    ruleBaseCache                     = Collections.synchronizedMap( new HashMap<String, RuleBase>() );
+    public static Map<String, RuleBase>    ruleBaseCache                     = Collections.synchronizedMap( new HashMap<String, RuleBase>() );
 
     public RulesRepository getRulesRepository() {
         return this.repository;
@@ -774,6 +774,7 @@
         data.catRules = item.getCategoryRules();
         //System.out.println("Cat Rules: " + data.catRules.toString());
         data.description = item.getDescription();
+        data.archived = item.isArchived();
         data.name = item.getName();
         data.lastModified = item.getLastModified().getTime();
         data.dateCreated = item.getCreatedDate().getTime();
@@ -832,6 +833,11 @@
         log.info( "USER:" + repository.getSession().getUserID() + " SAVING package [" + data.name + "]" );
 
         PackageItem item = repository.loadPackage( data.name );
+        
+        // If package is being unarchived.
+        boolean unarchived = (data.archived == false  && item.isArchived() == true);
+        Calendar packageLastModified = item.getLastModified();
+        
 
         updateDroolsHeader( data.header,
                             item );
@@ -851,9 +857,21 @@
         if ( data.archived ) {
             for ( Iterator<AssetItem> iter = item.getAssets(); iter.hasNext(); ) {
                 AssetItem assetItem = iter.next();
-                assetItem.archiveItem( true );
-                assetItem.checkin( data.description );
+                if ( !assetItem.isArchived() ) {
+                    assetItem.archiveItem( true );
+                    assetItem.checkin( data.description );
+                }
             }
+        } else if ( unarchived ) {
+            for ( Iterator<AssetItem> iter = item.getAssets(); iter.hasNext(); ) {
+                AssetItem assetItem = iter.next();
+                // Unarchive the assets archived after the package 
+                // ( == at the same time that the package was archived)
+                if ( assetItem.getLastModified().compareTo( packageLastModified ) >= 0 ) {
+                    assetItem.archiveItem( false );
+                    assetItem.checkin( data.description );
+                }
+            }
         }
 
         BRMSSuggestionCompletionLoader loader = new BRMSSuggestionCompletionLoader();
@@ -1797,17 +1815,21 @@
 
             ClassLoader cl = ((InternalRuleBase) this.ruleBaseCache.get( item.getUUID() )).getRootClassLoader();
             Thread.currentThread().setContextClassLoader( cl );
-            result= runScenario( scenario,
-                                item,
-                                cl,
-                                rb,
-                                coverage );
+            result = runScenario( scenario,
+                                  item,
+                                  cl,
+                                  rb,
+                                  coverage );
         } catch (Exception e) {
         	if (e instanceof DetailedSerializableException){
         		DetailedSerializableException err = (DetailedSerializableException)e;
         		result = new SingleScenarioResult();
-        		result.result = new ScenarioRunResult( err.getErrs(),
-                                                null );
+                if (err.getErrs() != null) {
+                    result.result = new ScenarioRunResult( err.getErrs(),
+                                                    null );
+                } else {
+                    throw err;
+                }
         	}
 		} finally {
 			Thread.currentThread().setContextClassLoader(originalCL);
@@ -2147,12 +2169,14 @@
         if ( pkg.containsAsset( "drools" ) ) {
             conf = pkg.loadAsset( "drools" );
             conf.updateContent( string );
+            
             conf.checkin( "" );
         } else {
             conf = pkg.addAsset( "drools",
                                  "" );
             conf.updateFormat( "package" );
             conf.updateContent( string );
+            
             conf.checkin( "" );
         }
 

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/BRMSPackageBuilder.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/BRMSPackageBuilder.java	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/BRMSPackageBuilder.java	2009-08-10 15:13:37 UTC (rev 28890)
@@ -116,7 +116,7 @@
                 byte[] buf = new byte[1024];
                 int len = 0;
                 while ( (entry = jis.getNextJarEntry()) != null ) {
-                    if ( !entry.isDirectory() ) {
+                    if ( !entry.isDirectory() && !entry.getName().endsWith( ".java" ) ) {
                         ByteArrayOutputStream out = new ByteArrayOutputStream();
                         while ( (len = jis.read( buf )) >= 0 ) {
                             out.write( buf, 0, len );

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java	2009-08-10 15:13:37 UTC (rev 28890)
@@ -22,7 +22,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
-import java.util.jar.JarInputStream;
 
 import org.drools.builder.conf.DefaultPackageNameOption;
 import org.drools.compiler.DroolsError;
@@ -301,7 +300,7 @@
 	}
 
 	private void addDrl(String drl) {
-		if ("".equals(drl)) {
+		if ( "".equals( drl.trim() ) ) {
 			return;
 		}
 		try {

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/files/FeedServlet.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/files/FeedServlet.java	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/files/FeedServlet.java	2009-08-10 15:13:37 UTC (rev 28890)
@@ -25,6 +25,8 @@
  */
 public class FeedServlet extends RepositoryServlet {
 
+    private static final String VIEW_URL = "viewUrl";
+
     @Override
     protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
         try {
@@ -59,7 +61,7 @@
         Iterator<AssetItem> it = pg.assets.iterator();
         List<AtomFeed.AtomEntry> entries = new ArrayList<AtomFeed.AtomEntry>();
         buildEntries(request, entries, it, status);
-        AtomFeed feed = new AtomFeed("Category: " + cat, Calendar.getInstance(), request.getServerName() + cat, request.getServletPath(), request.getRequestURI(), entries, "Guvnor category of items: " + cat);
+        AtomFeed feed = new AtomFeed("Category: " + cat, Calendar.getInstance(), request.getServerName() + cat, request.getParameter(VIEW_URL), request.getRequestURL().toString(), entries, "Guvnor category of items: " + cat);
         response.setContentType("application/atom+xml");
         response.getOutputStream().print(feed.getAtom());
     }
@@ -81,7 +83,7 @@
         Iterator<AssetItem> it = pkg.getAssets();
         buildEntries(request, entries, it, request.getParameter("status"));
 
-        AtomFeed feed = new AtomFeed("Knowledge package: " + pkg.getName(), pkg.getLastModified(), pkg.getUUID(), request.getServletPath(), request.getRequestURI(), entries, pkg.getDescription());
+        AtomFeed feed = new AtomFeed("Knowledge package: " + pkg.getName(), pkg.getLastModified(), pkg.getUUID(), request.getParameter(VIEW_URL), request.getRequestURL().toString(), entries, pkg.getDescription());
         response.setContentType("application/atom+xml");
         response.getOutputStream().print(feed.getAtom());
     }
@@ -175,10 +177,11 @@
             private String checkinComment;
             private String format;
 
+
             public AtomEntry(HttpServletRequest req, AssetItem asset) {
                 this.name = asset.getName();
                 this.format = asset.getFormat();
-                this.webURL = req.getParameter("viewUrl") + "#asset=" + asset.getUUID() + "&nochrome";
+                this.webURL = req.getParameter(VIEW_URL) + "#asset=" + asset.getUUID() + "&nochrome";
                 this.id = asset.getUUID() + "&version=" + asset.getVersionNumber();
                 this.updated = ISO8601.format(asset.getLastModified());
                 this.published = ISO8601.format(asset.getCreatedDate());

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/files/FileManagerUtils.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/files/FileManagerUtils.java	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/files/FileManagerUtils.java	2009-08-10 15:13:37 UTC (rev 28890)
@@ -262,6 +262,7 @@
             if ( MigrateRepository.needsRuleflowMigration( repository ) ) {
                 MigrateRepository.migrateRuleflows( repository );
             }
+            ServiceImplementation.ruleBaseCache.clear();    
         } catch ( RepositoryException e ) {
             e.printStackTrace();
             throw new RulesRepositoryException( e );

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/resources/atom-feed-template.xml
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/resources/atom-feed-template.xml	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/resources/atom-feed-template.xml	2009-08-10 15:13:37 UTC (rev 28890)
@@ -24,8 +24,7 @@
            <name>@{entry.contributor}</name>
          </contributor>
          <category term="@{entry.format}" />
-         <content type="xhtml" xml:lang="en"
-          xml:base="http://diveintomark.org/">
+         <content type="xhtml" xml:lang="en">
            <div xmlns="http://www.w3.org/1999/xhtml">
                  <p>[Description: @{entry.description}]</p>
                  <p><i>[Note: @{entry.checkinComment}]</i></p>

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java	2009-08-10 15:13:37 UTC (rev 28890)
@@ -575,7 +575,50 @@
 		assertFalse(original.equals(data.lastModified));
 		assertEquals("ya", data.checkinComment);
 	}
+	
+	public void testArchiveAndUnarchivePackageAndHeader() throws Exception {
+        ServiceImplementation impl = getService();
+        String uuid = impl.createPackage( "testArchiveAndUnarchivePackageAndHeader",
+                                          "a desc" );
+        PackageConfigData data = impl.loadPackageConfig( uuid );
+        PackageItem it = impl.repository.loadPackageByUUID( uuid );
+        data.archived = true;
+        
+        AssetItem rule1 = it.addAsset("rule_1", "");
+        rule1.updateFormat(AssetFormats.DRL);
+        rule1
+                .updateContent("rule 'rule1' \n when \np : Person() \n then \np.setAge(42); \n end");
+        rule1.archiveItem( true );
+        rule1.checkin("");
+        impl.repository.save();
+        
+        impl.savePackage( data );
+        data = impl.loadPackageConfig( uuid );
+        it = impl.repository.loadPackage( data.name );
+        assertTrue( data.archived );
+        assertTrue( it.loadAsset( "drools" ).isArchived() );
+        assertTrue( it.loadAsset( "rule_1" ).isArchived() );
 
+        data.archived = false;
+
+        impl.savePackage( data );
+        data = impl.loadPackageConfig( uuid );
+        it = impl.repository.loadPackage( data.name );
+        assertFalse( data.archived );
+        assertFalse( it.loadAsset( "drools" ).isArchived() );
+        assertTrue( it.loadAsset( "rule_1" ).isArchived() );
+
+        data.archived = true;
+
+        impl.savePackage( data );
+        data = impl.loadPackageConfig( uuid );
+        it = impl.repository.loadPackage( data.name );
+        assertTrue( data.archived );
+        assertTrue( it.loadAsset( "drools" ).isArchived() );
+        assertTrue( it.loadAsset( "rule_1" ).isArchived() );
+
+    }
+
 	public void testPackageConfSave() throws Exception {
 		RepositoryService impl = getService();
 		String uuid = impl.createPackage("testPackageConfSave", "a desc");
@@ -2105,6 +2148,67 @@
 
 
 	}
+	
+	public void testRunScenarioWithJarThatHasSourceFiles() throws Exception {
+	    ServiceImplementation impl = getService();
+	    RulesRepository repo = impl.repository;
+	    
+	    // create our package
+	    PackageItem pkg = repo.createPackage("testRunScenarioWithJarThatHasSourceFiles", "");
+	    AssetItem model = pkg.addAsset("MyModel", "");
+	    model.updateFormat(AssetFormats.MODEL);
+	    model.updateBinaryContentAttachment(this.getClass()
+	                                        .getResourceAsStream("/jarWithSourceFiles.jar"));
+	    model.checkin("");
+	    
+	    ServiceImplementation.updateDroolsHeader("import org.test.Person; \n import org.test.Banana; \n ", pkg);
+	    
+	    AssetItem asset = pkg.addAsset("testRule", "");
+	    asset.updateFormat(AssetFormats.DRL);
+	    asset.updateContent("rule 'MyGoodRule' \n dialect 'mvel' \n when \n Person() \n then \n insert( new Banana() ); \n end");
+	    asset.checkin("");
+	    repo.save();
+	    
+	    Scenario sc = new Scenario();
+	    FactData person = new FactData();
+	    person.name = "p";
+	    person.type = "Person";
+	    
+	    
+	    sc.fixtures.add(person);
+	    sc.fixtures.add(new ExecutionTrace());
+	    VerifyRuleFired vr = new VerifyRuleFired("MyGoodRule", 1, null);
+	    sc.fixtures.add(vr);
+	   
+	    
+	    ScenarioRunResult res = null;
+	    try {
+	        res = impl.runScenario( pkg.getName(),
+                                                      sc ).result;
+        } catch ( ClassFormatError e ) {
+            fail( "Probably failed when loading a source file instead of class file. " + e );
+        }
+	    assertEquals(null, res.errors);
+	    assertNotNull(res.scenario);
+	    assertTrue(vr.wasSuccessful());
+	    
+	    
+	    res = impl.runScenario(pkg.getName(), sc).result;
+	    assertEquals(null, res.errors);
+	    assertNotNull(res.scenario);
+	    assertTrue(vr.wasSuccessful());
+	    
+	    impl.ruleBaseCache.clear();
+	    
+	    res = impl.runScenario(pkg.getName(), sc).result;
+	    assertEquals(null, res.errors);
+	    assertNotNull(res.scenario);
+	    assertTrue(vr.wasSuccessful());
+	    
+	    
+	    
+	    
+	}
 
 	public void testRunPackageScenarios() throws Exception {
 		ServiceImplementation impl = getService();

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java	2009-08-10 15:13:37 UTC (rev 28890)
@@ -620,8 +620,34 @@
         assertEquals(-1, drl.indexOf("garbage"));
 
     }
+    
+    public void testBuildPackageWithEmptyHeader() throws Exception {
+        RulesRepository repo = getRepo();
 
+        //first, setup the package correctly:
+        PackageItem pkg = repo.createPackage( "testBuildPackageWithEmptyHeader",
+                                              "" );
 
+        ServiceImplementation.updateDroolsHeader( "\n",
+                                                  pkg );
+        repo.save();
+
+        ContentPackageAssembler asm = null;
+        try {
+            asm = new ContentPackageAssembler( pkg );
+        } catch ( NullPointerException e ) {
+            // Possible cause: Header has only white spaces "\n\t".
+            fail( e.toString() );
+        }
+        String drl = asm.getDRL();
+
+        assertNotNull( drl );
+        assertEquals( "package testBuildPackageWithEmptyHeader",
+                      drl.trim() );
+
+    }
+
+
     public void testSkipDisabledPackageStuff() throws Exception {
         RulesRepository repo = getRepo();
 

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPRequest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPRequest.java	2009-08-10 13:08:44 UTC (rev 28889)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPRequest.java	2009-08-10 15:13:37 UTC (rev 28890)
@@ -110,8 +110,8 @@
 	}
 
 	public StringBuffer getRequestURL() {
-		// TODO Auto-generated method stub
-		return null;
+
+		return new StringBuffer("http://foo.com");
 	}
 
 	public String getRequestedSessionId() {

Copied: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/resources/jarWithSourceFiles.jar (from rev 26943, labs/jbossrules/trunk/drools-guvnor/src/test/resources/jarWithSourceFiles.jar)
===================================================================
(Binary files differ)



More information about the jboss-svn-commits mailing list