modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleSummaryStep.java
| 118 +++++++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundlesListView.java
| 61 ++++-
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
| 5
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
| 35 ++
5 files changed, 176 insertions(+), 47 deletions(-)
New commits:
commit 5fc81509e8651a7fd52c1883f57d6af990c5eaba
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Mar 24 03:03:16 2010 -0400
finishing up create bundle wizard. the summary page is almost done - can't get the
vlayout of the file list to look right, need to fix that
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleSummaryStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleSummaryStep.java
index bddf61b..a0c565b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleSummaryStep.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleSummaryStep.java
@@ -18,12 +18,12 @@
*/
package org.rhq.enterprise.gui.coregui.client.bundle.create;
-import com.smartgwt.client.types.Alignment;
-import com.smartgwt.client.types.TitleOrientation;
+import com.google.gwt.user.client.ui.HasHorizontalAlignment;
+import com.google.gwt.user.client.ui.Label;
import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.form.DynamicForm;
-import com.smartgwt.client.widgets.form.fields.TextAreaItem;
-import com.smartgwt.client.widgets.form.fields.TextItem;
+import com.smartgwt.client.widgets.layout.HLayout;
+import com.smartgwt.client.widgets.layout.LayoutSpacer;
+import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.enterprise.gui.coregui.client.components.wizard.WizardStep;
@@ -32,7 +32,6 @@ import
org.rhq.enterprise.gui.coregui.client.components.wizard.WizardStep;
*/
public class BundleSummaryStep implements WizardStep {
- private DynamicForm form;
private final AbstractBundleCreateWizard wizard;
public BundleSummaryStep(AbstractBundleCreateWizard bundleCreationWizard) {
@@ -40,41 +39,92 @@ public class BundleSummaryStep implements WizardStep {
}
public Canvas getCanvas() {
- TextItem nameTextItem;
- TextItem versionTextItem;
- TextAreaItem descriptionTextAreaItem;
- TextItem bundleTypeTextItem;
- form = new DynamicForm();
- form.setPadding(20);
- form.setWidth100();
- form.setNumCols(2);
+ VLayout top = new VLayout();
+ top.setAutoHeight();
+ top.setPadding(20);
+ top.setWidth100();
- bundleTypeTextItem = new TextItem("bundleTypeItem", "Bundle
Type");
- bundleTypeTextItem.setValue(wizard.getBundleType().getName());
- bundleTypeTextItem.setDisabled(true);
- bundleTypeTextItem.setTitleAlign(Alignment.LEFT);
+ HLayout bundleTypeBox = new HLayout();
+ bundleTypeBox.setWidth100();
+ bundleTypeBox.setExtraSpace(10);
+ Label bundleTypeLabel = new Label("Type:");
+ bundleTypeLabel.setWidth("10%");
+ bundleTypeLabel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
+ bundleTypeLabel.setWordWrap(false);
+ Label bundleTypeValue = new Label(wizard.getBundleType().getName());
+ bundleTypeValue.setWidth("90%");
+ bundleTypeValue.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
+ bundleTypeBox.addMember(bundleTypeLabel);
+ bundleTypeBox.addMember(bundleTypeValue);
+ top.addMember(bundleTypeBox);
- nameTextItem = new TextItem("name", "Name");
- nameTextItem.setValue(wizard.getBundleName());
- nameTextItem.setDisabled(true);
- nameTextItem.setTitleAlign(Alignment.LEFT);
+ HLayout nameBox = new HLayout();
+ nameBox.setWidth100();
+ nameBox.setExtraSpace(10);
+ Label nameLabel = new Label("Name:");
+ nameLabel.setWidth("10%");
+ nameLabel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
+ nameLabel.setWordWrap(false);
+ Label nameValue = new Label(wizard.getBundleName());
+ nameValue.setWidth("90%");
+ nameValue.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
+ nameBox.addMember(nameLabel);
+ nameBox.addMember(nameValue);
+ top.addMember(nameBox);
+ top.addMember(new LayoutSpacer());
- versionTextItem = new TextItem("version", "Version");
- versionTextItem.setValue(wizard.getBundleVersionString());
- versionTextItem.setDisabled(true);
- versionTextItem.setTitleAlign(Alignment.LEFT);
+ HLayout versionBox = new HLayout();
+ versionBox.setWidth100();
+ versionBox.setExtraSpace(10);
+ Label versionLabel = new Label("Version:");
+ versionLabel.setWidth("10%");
+ versionLabel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
+ versionLabel.setWordWrap(false);
+ Label versionValue = new Label(wizard.getBundleVersionString());
+ versionValue.setWidth("90%");
+ versionValue.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
+ versionBox.addMember(versionLabel);
+ versionBox.addMember(versionValue);
+ top.addMember(versionBox);
+ top.addMember(new LayoutSpacer());
- descriptionTextAreaItem = new TextAreaItem("description",
"Description");
- descriptionTextAreaItem.setValue(wizard.getBundleDescription());
- descriptionTextAreaItem.setDisabled(true);
- descriptionTextAreaItem.setTitleOrientation(TitleOrientation.TOP);
- descriptionTextAreaItem.setColSpan(2);
- descriptionTextAreaItem.setWidth(300);
+ HLayout descriptionBox = new HLayout();
+ descriptionBox.setWidth100();
+ descriptionBox.setExtraSpace(10);
+ Label descriptionLabel = new Label("Description:");
+ descriptionLabel.setWidth("10%");
+ descriptionLabel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
+ descriptionLabel.setWordWrap(false);
+ Label descriptionValue = new Label(wizard.getBundleDescription());
+ descriptionValue.setWidth("90%");
+ descriptionValue.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
+ descriptionBox.addMember(descriptionLabel);
+ descriptionBox.addMember(descriptionValue);
+ top.addMember(descriptionBox);
+ top.addMember(new LayoutSpacer());
- form.setItems(bundleTypeTextItem, nameTextItem, versionTextItem,
descriptionTextAreaItem);
+ HLayout filesBox = new HLayout();
+ filesBox.setWidth100();
+ filesBox.setExtraSpace(10);
+ Label filesLabel = new Label("Files:");
+ filesLabel.setWidth("10%");
+ filesLabel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
+ filesLabel.setWordWrap(false);
+ VLayout filesValues = new VLayout();
+ filesValues.setWidth("90%");
+ filesValues.setAutoHeight();
+ for (String filename : wizard.getAllBundleFilesStatus().keySet()) {
+ Label fileNameValue = new Label(filename);
+ fileNameValue.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
+ fileNameValue.setWordWrap(false);
+ filesValues.addMember(fileNameValue);
+ }
+ filesBox.addMember(filesLabel);
+ filesBox.addMember(filesValues);
+ top.addMember(filesBox);
- return form;
+ return top;
}
public boolean nextPage() {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundlesListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundlesListView.java
index d702b9b..cf0d561 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundlesListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundlesListView.java
@@ -25,7 +25,11 @@ import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.bundle.Bundle;
+import org.rhq.core.domain.bundle.BundleVersion;
import org.rhq.core.domain.bundle.composite.BundleWithLatestVersionComposite;
+import org.rhq.core.domain.criteria.BundleCriteria;
+import org.rhq.core.domain.criteria.BundleVersionCriteria;
+import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.bundle.create.BundleCreateWizard;
import org.rhq.enterprise.gui.coregui.client.bundle.create.BundleUpdateWizard;
@@ -59,14 +63,14 @@ public class BundlesListView extends VLayout {
table.getListGrid().setSelectionType(SelectionStyle.SIMPLE);
table.getListGrid().setSelectionAppearance(SelectionAppearance.CHECKBOX);
- table.addTableAction("Create Bundle", Table.SelectionEnablement.ALWAYS,
null, new TableAction() {
+ table.addTableAction("Create New Bundle",
Table.SelectionEnablement.ALWAYS, null, new TableAction() {
public void executeAction(ListGridRecord[] selection) {
new BundleCreateWizard().startBundleWizard();
}
});
- table.addTableAction("Delete Bundle", Table.SelectionEnablement.ANY,
"Are You Sure?", new TableAction() {
+ table.addTableAction("Delete", Table.SelectionEnablement.ANY, "Are
You Sure?", new TableAction() {
public void executeAction(ListGridRecord[] selections) {
BundlesWithLatestVersionDataSource ds =
(BundlesWithLatestVersionDataSource) table.getDataSource();
for (ListGridRecord selection : selections) {
@@ -87,17 +91,58 @@ public class BundlesListView extends VLayout {
}
});
- table.addTableAction("Update Bundle", Table.SelectionEnablement.SINGLE,
null, new TableAction() {
+ table.addTableAction("Create New Version",
Table.SelectionEnablement.SINGLE, null, new TableAction() {
public void executeAction(ListGridRecord[] selection) {
- Bundle bundle = (Bundle)
selection[0].getAttributeAsObject("entity");
- BundleUpdateWizard bundleUpdateWizard = new BundleUpdateWizard(null);
- bundleUpdateWizard.startBundleWizard();
+ BundlesWithLatestVersionDataSource ds =
(BundlesWithLatestVersionDataSource) table.getDataSource();
+ final BundleWithLatestVersionComposite object =
ds.copyValues(selection[0]);
+ BundleVersionCriteria bvc = new BundleVersionCriteria();
+ bvc.addFilterBundleId(object.getBundleId());
+ bvc.addFilterVersion(object.getLatestVersion());
+ BundleGWTServiceAsync bundleManager =
GWTServiceLookup.getBundleService();
+ bundleManager.findBundleVersionsByCriteria(bvc, new
AsyncCallback<PageList<BundleVersion>>() {
+ public void onSuccess(PageList<BundleVersion> result) {
+ if (result == null || result.size() != 1) {
+ CoreGUI.getMessageCenter().notify(
+ new Message("Failed to get last bundle version
[" + object.getLatestVersion() + "]",
+ Severity.Error));
+ return;
+ }
+
+ BundleUpdateWizard bundleUpdateWizard = new
BundleUpdateWizard(result.get(0));
+ bundleUpdateWizard.startBundleWizard();
+ }
+
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError(
+ "Failed to load last bundle version [" +
object.getLatestVersion() + "]", caught);
+ }
+ });
}
});
- table.addTableAction("Deploy Selected Bundle",
Table.SelectionEnablement.SINGLE, null, new TableAction() {
+ table.addTableAction("Deploy", Table.SelectionEnablement.SINGLE, null,
new TableAction() {
public void executeAction(ListGridRecord[] selection) {
- new BundleDeployWizard((Bundle)
selection[0].getAttributeAsObject("object")).startBundleWizard();
+ BundlesWithLatestVersionDataSource ds =
(BundlesWithLatestVersionDataSource) table.getDataSource();
+ final BundleWithLatestVersionComposite object =
ds.copyValues(selection[0]);
+ BundleCriteria bc = new BundleCriteria();
+ bc.addFilterId(object.getBundleId());
+ BundleGWTServiceAsync bundleManager =
GWTServiceLookup.getBundleService();
+ bundleManager.findBundlesByCriteria(bc, new
AsyncCallback<PageList<Bundle>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError(
+ "Failed to load bundle to deploy [" +
object.getBundleName() + "]", caught);
+ }
+
+ public void onSuccess(PageList<Bundle> result) {
+ if (result == null || result.size() != 1) {
+ CoreGUI.getMessageCenter().notify(
+ new Message("Failed to get bundle to deploy ["
+ object.getBundleName() + "]",
+ Severity.Error));
+ return;
+ }
+ new BundleDeployWizard(result.get(0)).startBundleWizard();
+ }
+ });
}
});
commit ea7f26cca66aa0849c5613fad2ec73144f72b0a2
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Mar 24 03:02:22 2010 -0400
was seeing erroneous behavior when deleting bundles - changing impl and added unit
test
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
index 3c74dfe..e3b7520 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
@@ -70,7 +70,8 @@ import org.rhq.core.domain.content.Distribution;
+ " WHERE bv.bundle.id = :bundleId " //
+ " ORDER BY bv.versionOrder DESC "), //
@NamedQuery(name = BundleVersion.QUERY_FIND_ALL, query = "SELECT bv FROM
BundleVersion bv "), //
- @NamedQuery(name = BundleVersion.QUERY_FIND_BY_NAME, query = "SELECT bv FROM
BundleVersion bv WHERE bv.name = :name ") //
+ @NamedQuery(name = BundleVersion.QUERY_FIND_BY_NAME, query = "SELECT bv FROM
BundleVersion bv WHERE bv.name = :name "), //
+ @NamedQuery(name = BundleVersion.QUERY_FIND_BY_BUNDLE_ID, query = "SELECT bv
FROM BundleVersion bv WHERE bv.bundle.id = :bundleId ") //
})
@SequenceGenerator(name = "SEQ", sequenceName =
"RHQ_BUNDLE_VERSION_ID_SEQ")
@Table(name = "RHQ_BUNDLE_VERSION")
@@ -83,6 +84,7 @@ public class BundleVersion implements Serializable {
public static final String QUERY_FIND_VERSION_INFO_BY_BUNDLE_ID =
"BundleVersion.findVersionsByBundleId";
public static final String QUERY_FIND_ALL = "BundleVersion.findAll";
public static final String QUERY_FIND_BY_NAME =
"BundleVersion.findByName";
+ public static final String QUERY_FIND_BY_BUNDLE_ID =
"BundleVersion.findByBundleId";
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQ")
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index e52e3b6..a6be5ca 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -673,7 +673,10 @@ public class BundleManagerBean implements BundleManagerLocal,
BundleManagerRemot
return;
}
- for (BundleVersion bv : bundle.getBundleVersions()) {
+ Query q = entityManager.createNamedQuery(BundleVersion.QUERY_FIND_BY_BUNDLE_ID);
+ q.setParameter("bundleId", bundleId);
+ List<BundleVersion> bvs = q.getResultList();
+ for (BundleVersion bv : bvs) {
bundleManager.deleteBundleVersion(subject, bv.getId(), false);
}
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
index 0d99b17..c975d38 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
@@ -271,6 +271,35 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
}
@Test(enabled = TESTS_ENABLED)
+ public void testDeleteBundle() throws Exception {
+ Bundle b1 = createBundle("one");
+ assertNotNull(b1);
+ BundleVersion bv1 = createBundleVersion(b1.getName() + "-1", null,
b1);
+ assertNotNull(bv1);
+ assertEquals("1.0", bv1.getVersion());
+ BundleVersion bv2 = createBundleVersion(b1.getName() + "-2", null,
b1);
+ assertNotNull(bv2);
+ assertEquals("1.1", bv2.getVersion());
+
+ // let's add a bundle file so we can ensure our deletion will also delete the
file too
+ bundleManager.addBundleFileViaByteArray(overlord, bv2.getId(),
"testDeleteBundle", "1.0", new Architecture(
+ "noarch"), "content".getBytes(), false);
+ BundleFileCriteria bfCriteria = new BundleFileCriteria();
+ bfCriteria.addFilterBundleVersionId(bv2.getId());
+ bfCriteria.fetchPackageVersion(true);
+ PageList<BundleFile> files =
bundleManager.findBundleFilesByCriteria(overlord, bfCriteria);
+ assert files.size() == 1 : files;
+ assert
files.get(0).getPackageVersion().getGeneralPackage().getName().equals("testDeleteBundle")
: files;
+
+ bundleManager.deleteBundle(overlord, b1.getId());
+
+ BundleCriteria bCriteria = new BundleCriteria();
+ bCriteria.addFilterId(b1.getId());
+ PageList<Bundle> bResults = bundleManager.findBundlesByCriteria(overlord,
bCriteria);
+ assert bResults.size() == 0;
+ }
+
+ @Test(enabled = TESTS_ENABLED)
public void testDeleteBundleVersion() throws Exception {
Bundle b1 = createBundle("one");
assertNotNull(b1);
@@ -282,14 +311,14 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
assertEquals("1.1", bv2.getVersion());
// let's add a bundle file so we can ensure our deletion will also delete the
file too
- bundleManager.addBundleFileViaByteArray(overlord, bv2.getId(),
"testfile", "1.0", new Architecture("noarch"),
- "content".getBytes(), false);
+ bundleManager.addBundleFileViaByteArray(overlord, bv2.getId(),
"testDeleteBundleVersion", "1.0",
+ new Architecture("noarch"), "content".getBytes(),
false);
BundleFileCriteria bfCriteria = new BundleFileCriteria();
bfCriteria.addFilterBundleVersionId(bv2.getId());
bfCriteria.fetchPackageVersion(true);
PageList<BundleFile> files =
bundleManager.findBundleFilesByCriteria(overlord, bfCriteria);
assert files.size() == 1 : files;
- assert
files.get(0).getPackageVersion().getGeneralPackage().getName().equals("testfile")
: files;
+ assert
files.get(0).getPackageVersion().getGeneralPackage().getName().equals("testDeleteBundleVersion")
: files;
BundleVersionCriteria bvCriteria = new BundleVersionCriteria();
BundleCriteria bCriteria = new BundleCriteria();