[jboss-svn-commits] JBL Code SVN: r29589 - in labs/jbossrules/trunk: drools-guvnor/src/main/java/org/drools/guvnor/client/packages and 10 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Oct 13 06:59:01 EDT 2009
Author: jervisliu
Date: 2009-10-13 06:59:00 -0400 (Tue, 13 Oct 2009)
New Revision: 29589
Modified:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/PackageBuilderWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/selector/SelectorManager.java
labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/PopulateDataTest.java
labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java
labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/PackageDeploymentServletTest.java
labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/selector/SelectorManagerTest.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/LinkedAssetItem.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java
Log:
https://jira.jboss.org/jira/browse/GUVNOR-109: add possibility to choose selectors from a list
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -1957,4 +1957,11 @@
String NewLinkedAssetDesc3();
+ String BuildWholePackageTip();
+
+ String BuiltInSelectorTip();
+
+ String BuildWholePackage();
+
+ String BuiltInSelector();
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties 2009-10-13 10:59:00 UTC (rev 29589)
@@ -463,7 +463,7 @@
ThisWillValidateAndCompileAllTheAssetsInAPackage=This will validate and compile all the assets in a package.
OptionalSelectorName=(Optional) selector name
CustomSelector=Custom selector
-SelectorTip=A selector is configured by administrators to choose what assets form part of a package build. This is configured on the server side. See the WEB-INF/classes/selectors.properties for details.
+SelectorTip=A selector is configured by administrators to choose what assets form part of a package build. If no selector is chosen, the whole package will be built. This is configured on the server side. See the WEB-INF/classes/selectors.properties for details.
BuildBinaryPackage=Build binary package:
BuildingPackageNote=Building a package will collect all the assets, validate and compile into a deployable package.
CreateSnapshotForDeployment=Create snapshot for deployment
@@ -931,3 +931,7 @@
NewLinkedAssetDesc1=This will create a new asset that links to an existing one. To create a linked asset,
NewLinkedAssetDesc2=you need to open the existing asset that you want to link to, copy and paste its
NewLinkedAssetDesc3=UUID to the text box above.
+BuildWholePackageTip=This will build the whole package.
+BuiltInSelectorTip=The built-in selector allows you to choose what assets form part of a package build according to asset's status, category and meta data. Please use a custom selector if the built-in selector does not satisfy your requirement.
+BuildWholePackage=Build whole package
+BuiltInSelector=Built-in selector
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/PackageBuilderWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/PackageBuilderWidget.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/PackageBuilderWidget.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -25,6 +25,7 @@
import org.drools.guvnor.client.common.GenericCallback;
import org.drools.guvnor.client.common.InfoPopup;
import org.drools.guvnor.client.common.LoadingPopup;
+import org.drools.guvnor.client.common.SmartViewWizard;
import org.drools.guvnor.client.rpc.BuilderResult;
import org.drools.guvnor.client.rpc.PackageConfigData;
import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
@@ -44,6 +45,7 @@
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.KeyboardListener;
import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.SimplePanel;
@@ -78,8 +80,14 @@
public FormStyleLayout layout;
private PackageConfigData conf;
private EditItemEvent editEvent;
- private static Constants constants;
+ private static Constants constants = GWT.create(Constants.class);
+
+ private final FormStyleLayout buildWholePackageLayout = new FormStyleLayout();
+ private final FormStyleLayout builtInSelectorLayout = new FormStyleLayout();
+ private final FormStyleLayout customSelectorLayout = new FormStyleLayout();
+ private String buildMode = "buildWholePackage";
+
public PackageBuilderWidget(final PackageConfigData conf,
EditItemEvent editEvent) {
layout = new FormStyleLayout();
@@ -88,27 +96,109 @@
final SimplePanel buildResults = new SimplePanel();
+ RadioButton wholePackageRadioButton = new RadioButton("action", "Build whole package");
+ RadioButton builtInSelectorRadioButton = new RadioButton("action", "Use built-in selector");
+ RadioButton customSelectorRadioButton = new RadioButton("action", "Use custom selector");
+ wholePackageRadioButton.addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ buildWholePackageLayout.setVisible(true);
+ builtInSelectorLayout.setVisible(false);
+ customSelectorLayout.setVisible(false);
+ buildMode = "buildWholePackage";
+ }
+ });
+ builtInSelectorRadioButton.addClickListener(new ClickListener() {
+ public void onClick(Widget w) {
+ buildWholePackageLayout.setVisible(false);
+ builtInSelectorLayout.setVisible(true);
+ customSelectorLayout.setVisible(false);
+ buildMode = "builtInSelector";
+ }
+ });
+ customSelectorRadioButton.addClickListener(new ClickListener() {
+ public void onClick(Widget arg0) {
+ buildWholePackageLayout.setVisible(false);
+ builtInSelectorLayout.setVisible(false);
+ customSelectorLayout.setVisible(true);
+ buildMode = "customSelector";
+ }
+ });
+
+ VerticalPanel verticalPanel = new VerticalPanel();
+
+ HorizontalPanel wholePackageRadioButtonPanel = new HorizontalPanel();
+ wholePackageRadioButtonPanel.add(wholePackageRadioButton);
+ wholePackageRadioButtonPanel.add( new InfoPopup(constants.BuildWholePackage(), constants.BuildWholePackageTip()) );
+ verticalPanel.add(wholePackageRadioButtonPanel);
+
+ HorizontalPanel builtInSelectorRadioButtonPanel = new HorizontalPanel();
+ builtInSelectorRadioButtonPanel.add(builtInSelectorRadioButton);
+ builtInSelectorRadioButtonPanel.add( new InfoPopup(constants.BuiltInSelector(), constants.BuiltInSelectorTip()) );
+ verticalPanel.add(builtInSelectorRadioButtonPanel);
+
+ HorizontalPanel customSelectorRadioButtonPanel = new HorizontalPanel();
+ customSelectorRadioButtonPanel.add(customSelectorRadioButton);
+ customSelectorRadioButtonPanel.add( new InfoPopup(constants.CustomSelector(), constants.SelectorTip()) );
+ verticalPanel.add(customSelectorRadioButtonPanel);
- final TextBox selector = new TextBox();
- constants = ((Constants) GWT.create(Constants.class));
+ layout.addAttribute("", verticalPanel);
+ wholePackageRadioButton.setChecked(true);
+
+ buildWholePackageLayout.setVisible(true);
+ builtInSelectorLayout.setVisible(false);
+ customSelectorLayout.setVisible(false);
+
+ //Build whole package layout
+ layout.addRow(buildWholePackageLayout);
+
+
+ //Built-in selector layout
+ HorizontalPanel builtInSelectorPanel = new HorizontalPanel();
+ builtInSelectorPanel.add( new HTML(" <i>" + "Status" + ": </i>") );
+
+ final ListBox operator = new ListBox();
+ String[] vals = new String[]{"=", "!=", "<", ">"};
+ for ( int i = 0; i < vals.length; i++ ) {
+ operator.addItem( vals[i], vals[i]);
+ }
+ builtInSelectorPanel.add( operator );
+
+ final TextBox statusValue = new TextBox();
+ statusValue.setTitle( constants.WildCardsSearchTip() );
+ builtInSelectorPanel.add(statusValue );
+
+ builtInSelectorLayout.addRow(builtInSelectorPanel);
+ layout.addRow( builtInSelectorLayout );
+
+
+ //Custom selector layout
+ customSelectorLayout.setVisible(false);
+ HorizontalPanel customSelectorPanel = new HorizontalPanel();
+ customSelectorPanel.add( new HTML(" <i>" + "Custom Selector" + ": </i>") ); //NON-NLS
+
+ final ListBox customSelector = new ListBox();
+ customSelector.setTitle( constants.WildCardsSearchTip() );
+ customSelectorPanel.add(customSelector);
+ loadCustomSelectorList(customSelector);
+
+ customSelectorLayout.addRow(customSelectorPanel);
+ layout.addRow( customSelectorLayout );
+
+
final Button b = new Button(constants.BuildPackage());
b.setTitle(constants.ThisWillValidateAndCompileAllTheAssetsInAPackage());
b.addClickListener(new ClickListener() {
public void onClick(Widget w) {
- doBuild(buildResults, selector.getText());
+ doBuild(buildResults, operator.getValue(operator.getSelectedIndex()), statusValue.getText(), customSelector.getSelectedIndex() != -1?customSelector.getValue(customSelector.getSelectedIndex()):null);
}
});
HorizontalPanel buildStuff = new HorizontalPanel();
buildStuff.add( b );
- buildStuff.add( new HTML(" <i>" + constants.OptionalSelectorName() + ": </i>") ); //NON-NLS
- buildStuff.add( selector );
- buildStuff.add( new InfoPopup(constants.CustomSelector(), constants.SelectorTip()) );
-
+
layout.addAttribute(constants.BuildBinaryPackage(), buildStuff);
- layout
- .addRow(new HTML("<i><small>" + constants.BuildingPackageNote() + "</small></i>"));//NON-NLS
+ layout.addRow(new HTML("<i><small>" + constants.BuildingPackageNote() + "</small></i>"));//NON-NLS
layout.addRow(buildResults);
Button snap = new Button(constants.CreateSnapshotForDeployment());
@@ -127,6 +217,50 @@
initWidget(layout);
}
+ private void loadCustomSelectorList(final ListBox customSelector) {
+ RepositoryServiceFactory.getService().getCustomSelectors( new GenericCallback<String[]>() {
+
+ public void onSuccess(String[] list) {
+ for ( int i = 0; i < list.length; i++ ) {
+ customSelector.addItem( list[i], list[i]);
+ }
+ }
+ });
+ }
+
+ private void doBuild(final Panel buildResults, final String operator, final String statusValue, final String customSelector) {
+ buildResults.clear();
+
+ final HorizontalPanel busy = new HorizontalPanel();
+ busy.add(new Label(constants.ValidatingAndBuildingPackagePleaseWait()));
+ busy.add(new Image("images/red_anime.gif")); //NON-NLS
+
+ //LoadingPopup.showMessage(constants.PleaseWaitDotDotDot());
+ buildResults.add(busy);
+
+ DeferredCommand.addCommand(new Command() {
+ public void execute() {
+ RepositoryServiceFactory.getService().buildPackage(conf.uuid, true, buildMode, operator, statusValue, customSelector,
+ new GenericCallback<BuilderResult[]>() {
+ public void onSuccess(BuilderResult[] result) {
+ LoadingPopup.close();
+ if (result == null) {
+ showSuccessfulBuild(buildResults);
+ } else {
+ showBuilderErrors(result, buildResults, editEvent);
+ }
+ }
+
+ public void onFailure(Throwable t) {
+ buildResults.clear();
+ super.onFailure(t);
+ }
+ });
+ }
+ });
+
+ }
+
/**
* Actually build the source, and display it.
*/
@@ -185,47 +319,6 @@
}
/**
- * Actually do the building.
- *
- * @param buildResults
- * The panel to stuff the results in.
- * @param selectorName
- */
- private void doBuild(final Panel buildResults, final String selectorName) {
-
- buildResults.clear();
-
- final HorizontalPanel busy = new HorizontalPanel();
- busy.add(new Label(constants.ValidatingAndBuildingPackagePleaseWait()));
- busy.add(new Image("images/red_anime.gif")); //NON-NLS
-
- //LoadingPopup.showMessage(constants.PleaseWaitDotDotDot());
- buildResults.add(busy);
-
- DeferredCommand.addCommand(new Command() {
- public void execute() {
- RepositoryServiceFactory.getService().buildPackage(conf.uuid, selectorName, true,
- new GenericCallback<BuilderResult[]>() {
- public void onSuccess(BuilderResult[] result) {
- LoadingPopup.close();
- if (result == null) {
- showSuccessfulBuild(buildResults);
- } else {
- showBuilderErrors(result, buildResults, editEvent);
- }
- }
-
- public void onFailure(Throwable t) {
- buildResults.clear();
- super.onFailure(t);
- }
- });
- }
- });
-
- }
-
- /**
* This is called to display the success (and a download option).
*
* @param buildResults
@@ -266,8 +359,6 @@
public static void showBuilderErrors(BuilderResult[] results, Panel buildResults, final EditItemEvent editEvent) {
buildResults.clear();
-
-
Object[][] data = new Object[results.length][4];
for (int i = 0; i < results.length; i++) {
BuilderResult res = results[i];
@@ -350,9 +441,6 @@
});
buildResults.add(g);
-
-
-
}
/**
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -291,9 +291,15 @@
* in the systems selectors.properties file. This will then apply the filter to the
* package being built.
*/
- public BuilderResult[] buildPackage(String packageUUID, String selectorName, boolean force) throws SerializableException;
+ public BuilderResult[] buildPackage(String packageUUID, boolean force, String buildMode, String operator, String statusDescriptionValue,
+ String customSelectorName) throws SerializableException;
/**
+ * return custom selector names
+ */
+ public String[] getCustomSelectors() throws SerializableException;
+
+ /**
* This will return the effective DRL for a package.
* This would be the equivalent if all the rules were written by hand in the one file.
* It may not actually be compiled this way in the implementation, so this is for display and
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -71,7 +71,8 @@
public void quickFindAsset(java.lang.String p0, int p1, boolean p2, AsyncCallback<org.drools.guvnor.client.rpc.TableDataResult> cb);
public void removeCategory(java.lang.String p0, AsyncCallback cb);
public void loadSuggestionCompletionEngine(java.lang.String p0, AsyncCallback<org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine> cb);
- public void buildPackage(java.lang.String p0, java.lang.String p1, boolean p2, AsyncCallback<org.drools.guvnor.client.rpc.BuilderResult[]> cb);
+ public void buildPackage(java.lang.String p0, boolean p1, java.lang.String p2, java.lang.String p3, java.lang.String p4, java.lang.String p5, AsyncCallback<org.drools.guvnor.client.rpc.BuilderResult[]> cb);
+ public void getCustomSelectors(AsyncCallback<java.lang.String[]> cb);
public void buildPackageSource(java.lang.String p0, AsyncCallback<java.lang.String> cb);
public void buildAssetSource(org.drools.guvnor.client.rpc.RuleAsset p0, AsyncCallback<java.lang.String> cb);
public void buildAsset(org.drools.guvnor.client.rpc.RuleAsset p0, AsyncCallback<org.drools.guvnor.client.rpc.BuilderResult[]> cb);
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -205,9 +205,12 @@
public org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine loadSuggestionCompletionEngine(java.lang.String p0) throws com.google.gwt.user.client.rpc.SerializableException {
return getService().loadSuggestionCompletionEngine( p0);
}
- public org.drools.guvnor.client.rpc.BuilderResult[] buildPackage(java.lang.String p0, java.lang.String p1, boolean p2) throws com.google.gwt.user.client.rpc.SerializableException {
- return getService().buildPackage( p0, p1, p2);
+ public org.drools.guvnor.client.rpc.BuilderResult[] buildPackage(java.lang.String p0, boolean p1, java.lang.String p2, java.lang.String p3 ,java.lang.String p4, java.lang.String p5) throws com.google.gwt.user.client.rpc.SerializableException {
+ return getService().buildPackage( p0, p1, p2, p3, p4, p5);
}
+ public java.lang.String[] getCustomSelectors() throws com.google.gwt.user.client.rpc.SerializableException {
+ return getService().getCustomSelectors();
+ }
public java.lang.String buildPackageSource(java.lang.String p0) throws com.google.gwt.user.client.rpc.SerializableException {
return getService().buildPackageSource( p0);
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -72,6 +72,7 @@
import org.drools.guvnor.server.security.PackageNameType;
import org.drools.guvnor.server.security.PackageUUIDType;
import org.drools.guvnor.server.security.RoleTypes;
+import org.drools.guvnor.server.selector.SelectorManager;
import org.drools.guvnor.server.util.AssetFormatHelper;
import org.drools.guvnor.server.util.AssetLockManager;
import org.drools.guvnor.server.util.BRMSSuggestionCompletionLoader;
@@ -1434,39 +1435,55 @@
}
return result;
}
-
+
@WebRemote
@Restrict("#{identity.loggedIn}")
- public BuilderResult[] buildPackage(String packageUUID,
- String selectorConfigName,
- boolean force) throws SerializableException {
- if ( Contexts.isSessionContextActive() ) {
- Identity.instance().checkPermission( new PackageUUIDType( packageUUID ),
- RoleTypes.PACKAGE_DEVELOPER );
- }
- PackageItem item = repository.loadPackageByUUID( packageUUID );
- try {
- return buildPackage( selectorConfigName,
- force,
- item );
- } catch ( NoClassDefFoundError e ) {
- throw new DetailedSerializableException( "Unable to find a class that was needed when building the package [" + e.getMessage() + "]",
- "Perhaps you are missing them from the model jars, or from the BRMS itself (lib directory)." );
- } catch ( UnsupportedClassVersionError e ) {
- throw new DetailedSerializableException( "Can not build the package. One or more of the classes that are needed were compiled with an unsupported Java version.",
- "For example the pojo classes were compiled with Java 1.6 and Guvnor is running on Java 1.5. [" + e.getMessage() + "]" );
- }
- }
-
- private BuilderResult[] buildPackage(String selectorConfigName,
- boolean force,
- PackageItem item) throws DetailedSerializableException {
+ public BuilderResult[] buildPackage(String packageUUID, boolean force)
+ throws SerializableException {
+ return buildPackage(packageUUID, force, null, null, null, null);
+ }
+
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public BuilderResult[] buildPackage(String packageUUID, boolean force, String buildMode, String operator, String statusDescriptionValue,
+ String customSelectorName)
+ throws SerializableException {
+ if (Contexts.isSessionContextActive()) {
+ Identity.instance().checkPermission(
+ new PackageUUIDType(packageUUID),
+ RoleTypes.PACKAGE_DEVELOPER);
+ }
+ PackageItem item = repository.loadPackageByUUID(packageUUID);
+ try {
+ return buildPackage(item, force, buildMode, operator, statusDescriptionValue, customSelectorName);
+ } catch (NoClassDefFoundError e) {
+ throw new DetailedSerializableException(
+ "Unable to find a class that was needed when building the package ["
+ + e.getMessage() + "]",
+ "Perhaps you are missing them from the model jars, or from the BRMS itself (lib directory).");
+ } catch (UnsupportedClassVersionError e) {
+ throw new DetailedSerializableException(
+ "Can not build the package. One or more of the classes that are needed were compiled with an unsupported Java version.",
+ "For example the pojo classes were compiled with Java 1.6 and Guvnor is running on Java 1.5. ["
+ + e.getMessage() + "]");
+ }
+ }
+
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String[] getCustomSelectors()
+ throws SerializableException {
+ return SelectorManager.getInstance().getCustomSelectors();
+ }
+
+ private BuilderResult[] buildPackage(PackageItem item, boolean force, String buildMode,
+ String operator, String statusDescriptionValue,
+ String selectorConfigName) throws DetailedSerializableException {
if ( !force && item.isBinaryUpToDate() ) {
// we can just return all OK if its up to date.
return null;
}
- ContentPackageAssembler asm = new ContentPackageAssembler( item,
- selectorConfigName );
+ ContentPackageAssembler asm = new ContentPackageAssembler( item, true, buildMode, operator, statusDescriptionValue, selectorConfigName );
if ( asm.hasErrors() ) {
BuilderResult[] result = generateBuilderResults( asm );
return result;
@@ -1755,8 +1772,7 @@
PackageItem snap = repository.loadPackageSnapshot( pkg.getName(),
snapName );
BuilderResult[] res = this.buildPackage( snap.getUUID(),
- "",
- true );
+ true, null, null, null, null );
if ( res != null ) {
StringBuffer buf = new StringBuffer();
for ( int i = 0; i < res.length; i++ ) {
@@ -1917,9 +1933,7 @@
this.ruleBaseCache.put( item.getUUID(),
rb );
} else {
- BuilderResult[] errs = this.buildPackage( null,
- false,
- item );
+ BuilderResult[] errs = this.buildPackage(item, false, null, null, null, null);
if ( errs == null || errs.length == 0 ) {
rb = loadRuleBase( item,
buildCl );
@@ -1946,9 +1960,7 @@
log.error( e );
log.info( "...but trying to rebuild binaries..." );
try {
- BuilderResult[] res = this.buildPackage( "",
- true,
- item );
+ BuilderResult[] res = this.buildPackage(item, true, null, null, null, null);
if ( res != null && res.length > 0 ) {
throw new DetailedSerializableException( "There were errors when rebuilding the knowledgebase.",
"" );
@@ -2064,9 +2076,7 @@
loadRuleBase( item,
cl ) );
} else {
- BuilderResult[] errs = this.buildPackage( null,
- false,
- item );
+ BuilderResult[] errs = this.buildPackage(item, false, null, null, null, null);
if ( errs == null || errs.length == 0 ) {
this.ruleBaseCache.put( item.getUUID(),
loadRuleBase( item,
@@ -2291,8 +2301,7 @@
PackageItem pkg = (PackageItem) pkit.next();
try {
BuilderResult[] res = this.buildPackage( pkg.getUUID(),
- "",
- true );
+ true, null, null, null, null );
if ( res != null ) {
errs.append( "Unable to build package name [" + pkg.getName() + "]\n" );
StringBuffer buf = new StringBuffer();
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -23,6 +23,7 @@
import java.util.List;
import java.util.Properties;
+import org.apache.log4j.Logger;
import org.drools.builder.conf.DefaultPackageNameOption;
import org.drools.compiler.DroolsError;
import org.drools.compiler.DroolsParserException;
@@ -33,6 +34,8 @@
import org.drools.guvnor.server.contenthandler.IRuleAsset;
import org.drools.guvnor.server.selector.AssetSelector;
import org.drools.guvnor.server.selector.SelectorManager;
+import org.drools.guvnor.server.selector.BuiltInSelector;
+import org.drools.guvnor.server.util.LoggingHelper;
import org.drools.lang.descr.PackageDescr;
import org.drools.repository.AssetItem;
import org.drools.repository.AssetItemIterator;
@@ -49,6 +52,7 @@
* @author Michael Neale
*/
public class ContentPackageAssembler {
+ private static final Logger log = LoggingHelper.getLogger( ContentPackageAssembler.class );
private PackageItem pkg;
@@ -61,7 +65,10 @@
BRMSPackageBuilder builder;
- private String selectorConfigName;
+ private String customSelectorName;
+ private String buildMode;
+ private String operator;
+ private String statusDescriptionValue;
/**
* Use this if you want to build the whole package.
@@ -70,7 +77,7 @@
* The package.
*/
public ContentPackageAssembler(PackageItem pkg) {
- this(pkg, null);
+ this(pkg, true);
}
/**
@@ -81,7 +88,7 @@
* source.
*/
public ContentPackageAssembler(PackageItem pkg, boolean compile) {
- this(pkg, compile, null);
+ this(pkg, compile, null, null, null, null);
}
/**
@@ -92,11 +99,14 @@
* source.
* @param selectorConfigName
*/
- public ContentPackageAssembler(PackageItem assetPackage, boolean compile,
- String selectorConfigName) {
+ public ContentPackageAssembler(PackageItem assetPackage, boolean compile, String buildMode,
+ String operator, String statusDescriptionValue, String selectorConfigName) {
this.pkg = assetPackage;
- this.selectorConfigName = selectorConfigName;
+ this.customSelectorName = selectorConfigName;
+ this.buildMode = buildMode;
+ this.operator = operator;
+ this.statusDescriptionValue = statusDescriptionValue;
createBuilder();
@@ -106,18 +116,6 @@
}
/**
- * Use this if you want to build the whole package.
- *
- * @param assetPackage
- * The package to build
- *
- */
- public ContentPackageAssembler(PackageItem assetPackage,
- String selectorConfigName) {
- this(assetPackage, true, selectorConfigName);
- }
-
- /**
* Use this if you want to build and compile just the one asset.
*/
public ContentPackageAssembler(AssetItem assetToBuild) {
@@ -161,20 +159,33 @@
* This will always prioritise DRL before other assets.
*/
private void buildPackage() {
- AssetSelector selector = SelectorManager.getInstance().getSelector(
- selectorConfigName);
+ AssetSelector selector = null;
+ if("customSelector".equals(buildMode)) {
+ selector = SelectorManager.getInstance().getSelector(customSelectorName);
+ } else if ("builtInSelector".equals(buildMode)) {
+ selector = (BuiltInSelector)SelectorManager.getInstance().getSelector(
+ "BuiltInSelector");
+ ((BuiltInSelector)selector).setOperator(operator);
+ ((BuiltInSelector)selector).setStatus(statusDescriptionValue);
+ } else {
+ //return the NilSelector, i.e., allows everything
+ selector = SelectorManager.getInstance().getSelector(null);
+ }
+
if (selector == null) {
this.errors.add(new ContentAssemblyError(this.pkg,
- "The selector named " + selectorConfigName
+ "The selector named " + customSelectorName
+ " is not available."));
return;
}
+ StringBuffer includedAssets = new StringBuffer("Following assets have been included in package build: ");
Iterator<AssetItem> drls = pkg.listAssetsByFormat(new String[]{AssetFormats.DRL});
while (drls.hasNext()) {
AssetItem asset = (AssetItem) drls.next();
if (!asset.isArchived() && (selector.isAssetAllowed(asset))) {
buildAsset(asset);
+ includedAssets.append(asset.getName() + ", ");
}
}
Iterator<AssetItem> it = pkg.getAssets();
@@ -182,8 +193,10 @@
AssetItem asset = (AssetItem) it.next();
if (!asset.getFormat().equals(AssetFormats.DRL) && !asset.isArchived() && (selector.isAssetAllowed(asset))) {
buildAsset(asset);
+ includedAssets.append(asset.getName() + ", ");
}
}
+ log.info(includedAssets.toString());
}
/**
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/selector/SelectorManager.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/selector/SelectorManager.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/selector/SelectorManager.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -1,10 +1,13 @@
package org.drools.guvnor.server.selector;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import org.apache.log4j.Logger;
import org.drools.repository.AssetItem;
@@ -21,13 +24,12 @@
*/
public final Map<String, AssetSelector> selectors = new HashMap<String, AssetSelector>();
-
-
SelectorManager(String configPath) {
log.debug("Loading selectors");
Properties props = new Properties();
try {
props.load(this.getClass().getResourceAsStream(configPath));
+ props.put("BuiltInSelector", "org.drools.guvnor.server.selector.BuiltInSelector");
for (Iterator iter = props.keySet().iterator(); iter.hasNext();) {
String selectorName = (String) iter.next();
String val = props.getProperty(selectorName);
@@ -37,7 +39,7 @@
} else {
selectors.put(selectorName, loadSelectorImplementation( val ));
}
- } catch (RuntimeException e) {
+ } catch (Exception e) {
log.error("Unable to load a selector [" + val + "]", e);
}
}
@@ -48,14 +50,13 @@
/**
* Return a selector. If the name is null or empty it will return a nil/default selector
- * (one that lets everything through). If the selector iis not found, it will return null;
+ * (one that lets everything through). If the selector is not found, it will return null;
*/
public AssetSelector getSelector(String name) {
if (name == null || "".equals(name.trim())) {
return nilSelector();
} else {
if (this.selectors.containsKey( name )) {
-
return this.selectors.get( name );
} else {
log.debug( "No selector found by the name of " + name );
@@ -63,9 +64,16 @@
}
}
}
+
+ public String[] getCustomSelectors() {
+ Set<String> s = selectors.keySet();
+ List<String> selectorList = new ArrayList<String>();
+ selectorList.addAll(s);
+ selectorList.remove("BuiltInSelector");
+ String[] result = new String[selectorList.size()];
+ return selectorList.toArray(result);
+ }
-
-
private AssetSelector nilSelector() {
return new AssetSelector() {
public boolean isAssetAllowed(AssetItem asset) {
@@ -74,37 +82,16 @@
};
}
- private AssetSelector loadSelectorImplementation(String val) throws IOException {
+ private AssetSelector loadSelectorImplementation(String val) throws Exception {
+ return (AssetSelector) Thread.currentThread().getContextClassLoader().loadClass( val ).newInstance();
+ }
- try {
- return (AssetSelector) Thread.currentThread().getContextClassLoader().loadClass( val ).newInstance();
-
- } catch ( InstantiationException e ) {
- log.error( e );
- return null;
- } catch ( IllegalAccessException e ) {
- log.error( e );
- return null;
- } catch ( ClassNotFoundException e ) {
- log.error( e );
- return null;
- }
-
- }
-
-
-
-
private AssetSelector loadRuleSelector(String val) {
return new RuleBasedSelector(val);
}
-
-
-
public static SelectorManager getInstance() {
return INSTANCE;
}
-
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/PopulateDataTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/PopulateDataTest.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/PopulateDataTest.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -67,7 +67,7 @@
PackageItem pkg = serv.repository.loadPackage("com.billasurf.manufacturing.plant");
- serv.buildPackage(pkg.getUUID(), null, true);
+ serv.buildPackage(pkg.getUUID(), true);
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -1267,7 +1267,7 @@
.updateContent(" rule abc \n when \n then \n System.out.println(42); \n end");
item.checkin("");
- BuilderResult[] res = impl.buildPackage(pkg.getUUID(), "", true);
+ BuilderResult[] res = impl.buildPackage(pkg.getUUID(), true, null, null, null, "");
assertNull(res);
impl.createPackageSnapshot("testSnapshotRebuild", "SNAP", false, "");
@@ -1598,7 +1598,7 @@
rule1.checkin("");
repo.save();
- BuilderResult[] results = impl.buildPackage(pkg.getUUID(), null, true);
+ BuilderResult[] results = impl.buildPackage(pkg.getUUID(),true);
assertNull(results);
pkg = repo.loadPackage("testBinaryPackageCompile");
@@ -1630,7 +1630,7 @@
.updateContent("rule 'rule1' \n when p:PersonX() \n then System.err.println(42); \n end");
rule1.checkin("");
- results = impl.buildPackage(pkg.getUUID(), null, true);
+ results = impl.buildPackage(pkg.getUUID(), true);
assertNotNull(results);
assertEquals(1, results.length);
assertEquals(rule1.getName(), results[0].assetName);
@@ -1639,7 +1639,7 @@
assertEquals(rule1.getUUID(), results[0].uuid);
pkg = repo.loadPackageSnapshot("testBinaryPackageCompile", "SNAP1");
- results = impl.buildPackage(pkg.getUUID(), null, true);
+ results = impl.buildPackage(pkg.getUUID(),true);
assertNull(results);
}
@@ -1681,7 +1681,7 @@
rule2.checkin("");
repo.save();
- BuilderResult[] results = impl.buildPackage(pkg.getUUID(), null, true);
+ BuilderResult[] results = impl.buildPackage(pkg.getUUID(), true);
if (results != null) {
for (int i = 0; i < results.length; i++) {
System.err.println(results[i].message);
@@ -1725,7 +1725,7 @@
rule2.updateContent(BRXMLPersistence.getInstance().marshal(model));
rule2.checkin("");
- results = impl.buildPackage(pkg.getUUID(), null, true);
+ results = impl.buildPackage(pkg.getUUID(), true);
assertNotNull(results);
assertTrue(results.length > 0);
// assertEquals(2, results.length);
@@ -1735,7 +1735,7 @@
assertEquals(rule2.getUUID(), results[0].uuid);
pkg = repo.loadPackageSnapshot("testBinaryPackageCompileBRL", "SNAP1");
- results = impl.buildPackage(pkg.getUUID(), null, true);
+ results = impl.buildPackage(pkg.getUUID(), true);
assertNull(results);
// check that the rule name in the model is being set
@@ -2180,7 +2180,7 @@
assertFalse(impl.ruleBaseCache.containsKey(pkg.getUUID()));
impl.ruleBaseCache.remove("XXX");
- BuilderResult[] results = impl.buildPackage(pkg.getUUID(), null, true);
+ BuilderResult[] results = impl.buildPackage(pkg.getUUID(), true);
assertNull(results);
pkg = repo.loadPackage("testBinaryPackageUpToDate");
@@ -2200,7 +2200,7 @@
.getBoolean());
assertFalse(impl.ruleBaseCache.containsKey(pkg.getUUID()));
- impl.buildPackage(pkg.getUUID(), null, false);
+ impl.buildPackage(pkg.getUUID(), false);
assertTrue(pkg.getNode().getProperty("drools:binaryUpToDate")
.getBoolean());
@@ -2212,7 +2212,7 @@
assertFalse(pkg.getNode().getProperty("drools:binaryUpToDate")
.getBoolean());
assertFalse(pkg.isBinaryUpToDate());
- impl.buildPackage(pkg.getUUID(), null, false);
+ impl.buildPackage(pkg.getUUID(), false);
assertTrue(pkg.getNode().getProperty("drools:binaryUpToDate")
.getBoolean());
assertTrue(pkg.isBinaryUpToDate());
@@ -2778,7 +2778,7 @@
ass.content = dt;
impl.checkinVersion(ass);
- BuilderResult[] results = impl.buildPackage(pkg.getUUID(), null, true);
+ BuilderResult[] results = impl.buildPackage(pkg.getUUID(), true);
assertNull(results);
pkg = repo.loadPackage("testGuidedDTCompile");
Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -599,7 +599,7 @@
ContentPackageAssembler asm = new ContentPackageAssembler( pkg,
false,
- null );
+ null, null, null, null );
String drl = asm.getDRL();
assertNotNull( drl );
@@ -710,7 +710,7 @@
ContentPackageAssembler asm = new ContentPackageAssembler( pkg,
true,
- null );
+ null, null, null, null );
assertFalse( asm.hasErrors() );
Package p = asm.builder.getPackage();
@@ -938,8 +938,8 @@
}
} );
- ContentPackageAssembler asm = new ContentPackageAssembler( pkg,
- "testSelect" );
+ ContentPackageAssembler asm = new ContentPackageAssembler( pkg, true,
+ "customSelector", null, null, "testSelect");
Package pk = asm.getBinaryPackage();
assertEquals( 1,
@@ -948,12 +948,12 @@
pk.getRules()[0].getName() );
asm = new ContentPackageAssembler( pkg,
- null );
+ true );
pk = asm.getBinaryPackage();
assertEquals( 2,
pk.getRules().length );
- asm = new ContentPackageAssembler( pkg,
+ asm = new ContentPackageAssembler( pkg, true, "customSelector", null, null,
"nothing valid" );
assertTrue( asm.hasErrors() );
assertEquals( 1,
@@ -961,7 +961,7 @@
assertEquals( pkg,
asm.getErrors().get( 0 ).itemInError );
- asm = new ContentPackageAssembler( pkg,
+ asm = new ContentPackageAssembler( pkg, true, "customSelector", null, null,
"" );
pk = asm.getBinaryPackage();
assertEquals( 2,
@@ -969,15 +969,11 @@
}
-
-
-
private void assertContains(String sub,
String text) {
if ( text.indexOf( sub ) == -1 ) {
fail( "the text: '" + sub + "' was not found." );
}
-
}
private void assertDoesNotContain(String sub,
Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/PackageDeploymentServletTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/PackageDeploymentServletTest.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/PackageDeploymentServletTest.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -49,7 +49,7 @@
asset.updateFormat(AssetFormats.DRL);
asset.checkin("");
- assertNull(impl.buildPackage(pkg.getUUID(), null, true));
+ assertNull(impl.buildPackage(pkg.getUUID(), true));
@@ -228,7 +228,7 @@
asset.updateFormat(AssetFormats.DRL);
asset.checkin("");
- assertNull(impl.buildPackage(pkg.getUUID(), null, true));
+ assertNull(impl.buildPackage(pkg.getUUID(), true));
Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/selector/SelectorManagerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/selector/SelectorManagerTest.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/selector/SelectorManagerTest.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -42,11 +42,24 @@
assertSame( SelectorManager.getInstance(), SelectorManager.getInstance());
+ }
+ public void testGetBuiltInSelector() {
+ SelectorManager sm = SelectorManager.getInstance();
+ assertNotNull(sm);
+ assertNotNull(sm.selectors);
+ assertTrue(sm.getSelector( "BuiltInSelector" ) instanceof BuiltInSelector);
+ }
+
+ public void testGetCustomSelectors() {
+ SelectorManager sm = SelectorManager.getInstance();
+ assertNotNull(sm);
+ assertNotNull(sm.selectors);
+ assertEquals(2, sm.getCustomSelectors().length);
}
-
+
public void testBadConfig() throws Exception {
SelectorManager sm = new SelectorManager("/badselectors.properties");
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/LinkedAssetItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/LinkedAssetItem.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/LinkedAssetItem.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -75,6 +75,13 @@
null );
}
+ public boolean isLinkedAssetItem() {
+ if (wrapperNode == null) {
+ return false;
+ }
+ return true;
+ }
+
/**
* @return A unique identifier for this items content node.
* return the UUID of the wrapper node.
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java 2009-10-13 10:56:59 UTC (rev 29588)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java 2009-10-13 10:59:00 UTC (rev 29589)
@@ -609,6 +609,40 @@
assertTrue(list2.get( 2 ) instanceof AssetItem);
}
+ public void testSearchLinkedAssetByFormat() throws Exception {
+ PackageItem pkg1 = getRepo().createPackage( "testSearchLinkedAssetByFormat1", "" );
+ PackageItem pkg2 = getRepo().createPackage( "testSearchLinkedAssetByFormat2", "" );
+ getRepo().save();
+
+ AssetItem item = pkg1.addAsset( "testSearchLinkedAssetByFormatAsset1", "" );
+ item.updateFormat( "xyz" );
+ item.checkin( "la" );
+
+ AssetItem linkedItem = pkg2.addLinkedAsset( "testSearchLinkedAssetByFormatAsset2", item.getUUID(), null);
+ linkedItem.updateFormat( "xyz" );
+ linkedItem.checkin( "la" );
+
+ Thread.sleep( 150 );
+
+ AssetItemIterator it = pkg1.queryAssets( "drools:format='xyz'" );
+ List list = iteratorToList( it );
+ assertEquals(1, list.size());
+ assertTrue(list.get( 0 ) instanceof AssetItem);
+
+ linkedItem = pkg2.loadAsset("testSearchLinkedAssetByFormatAsset2");
+ assertNotNull(linkedItem);
+ assertTrue(linkedItem instanceof LinkedAssetItem);
+ assertTrue(((LinkedAssetItem)linkedItem).isLinkedAssetItem());
+ assertEquals("testSearchLinkedAssetByFormat2", linkedItem.getPackageName());
+
+ it = pkg2.queryAssets( "drools:format='xyz'" );
+ list = iteratorToList( it );
+
+ //REVISIT: Not working yet.
+ //assertEquals(1, list.size());
+ //assertTrue(list.get( 0 ) instanceof AssetItem);
+ }
+
public void testListArchivedAssets() throws Exception {
PackageItem pkg = getRepo().createPackage( "org.drools.archivedtest", "" );
getRepo().save();
More information about the jboss-svn-commits
mailing list