modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleFileCriteria.java | 6 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/AbstractBundleCreateWizard.java | 13 + modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleCreateWizard.java | 1 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleInfoStep.java | 9 + modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleSummaryStep.java | 87 ++++++++++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleUploadDataStep.java | 33 +-- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/wizard/WizardView.java | 38 +++- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java | 6 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/create/OperationParametersStep.java | 8 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/create/OperationSchedulingStep.java | 66 ++----- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ConfigurationStep.java | 13 - modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ConfigurationTemplateStep.java | 10 - modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java | 14 - modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java | 27 ++- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java | 5 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java | 4 modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java | 45 +++++ 17 files changed, 255 insertions(+), 130 deletions(-)
New commits: commit f799588e682c83802916a9cd8f117265402837d4 Author: John Mazzitelli mazz@redhat.com Date: Wed Mar 24 00:49:05 2010 -0400
get end-to-end bundle create wizard to work. still need to pretty up the upload file step, but this commit has end-to-end working with the ability to cancel at any point in the wizard
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/AbstractBundleCreateWizard.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/AbstractBundleCreateWizard.java index 01e2598..c33e4d5 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/AbstractBundleCreateWizard.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/AbstractBundleCreateWizard.java @@ -18,6 +18,8 @@ */ package org.rhq.enterprise.gui.coregui.client.bundle.create;
+import java.util.HashMap; + import com.google.gwt.user.client.rpc.AsyncCallback;
import org.rhq.core.domain.bundle.BundleType; @@ -38,6 +40,7 @@ public abstract class AbstractBundleCreateWizard extends AbstractBundleWizard { private String bundleDescription; private String recipe; private BundleVersion bundleVersion; + private HashMap<String, Boolean> allBundleFilesStatus; // bundle file names with their upload status (true=they were uploaded)
public BundleType getBundleType() { return bundleType; @@ -87,12 +90,20 @@ public abstract class AbstractBundleCreateWizard extends AbstractBundleWizard { this.bundleVersion = bv; }
+ public HashMap<String, Boolean> getAllBundleFilesStatus() { + return allBundleFilesStatus; + } + + public void setAllBundleFilesStatus(HashMap<String, Boolean> allBundleFilesStatus) { + this.allBundleFilesStatus = allBundleFilesStatus; + } + public void cancel() { final BundleVersion bv = getBundleVersion(); if (bv != null) { // the user must have created it already after verification step, delete it BundleGWTServiceAsync bundleServer = GWTServiceLookup.getBundleService(); - bundleServer.deleteBundleVersion(bv.getId(), new AsyncCallback<Void>() { + bundleServer.deleteBundleVersion(bv.getId(), true, new AsyncCallback<Void>() { public void onSuccess(Void result) { CoreGUI.getMessageCenter().notify( new Message("Canceled bundle [" + bv.getName() + "] version [" + bv.getVersion() + "]", diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleCreateWizard.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleCreateWizard.java index e76dc7f..43f7407 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleCreateWizard.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleCreateWizard.java @@ -32,6 +32,7 @@ public class BundleCreateWizard extends AbstractBundleCreateWizard { steps.add(new BundleInfoStep(this)); steps.add(new BundleUploadRecipeStep(this)); steps.add(new BundleUploadDataStep(this)); + steps.add(new BundleSummaryStep(this)); setSteps(steps); } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleInfoStep.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleInfoStep.java index 2bfc93d..58c4e66 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleInfoStep.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleInfoStep.java @@ -38,6 +38,8 @@ import org.rhq.enterprise.gui.coregui.client.CoreGUI; import org.rhq.enterprise.gui.coregui.client.components.wizard.WizardStep; import org.rhq.enterprise.gui.coregui.client.gwt.BundleGWTServiceAsync; import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; +import org.rhq.enterprise.gui.coregui.client.util.message.Message; +import org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
/** * @author John Mazzitelli @@ -128,6 +130,13 @@ public class BundleInfoStep implements WizardStep { if (wizard.getBundleType() == null) { bundleServer.getAllBundleTypes(new AsyncCallback<ArrayList<BundleType>>() { public void onSuccess(ArrayList<BundleType> result) { + if (result == null || result.size() == 0) { + wizard.setBundleType(null); + CoreGUI.getMessageCenter().notify( + new Message("No bundle types are supported", Severity.Error)); + return; + } + for (BundleType bundleType : result) { knownBundleTypes.put(bundleType.getName(), bundleType); if (wizard.getBundleType() == null) { 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 new file mode 100644 index 0000000..bddf61b --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleSummaryStep.java @@ -0,0 +1,87 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.client.bundle.create; + +import com.smartgwt.client.types.Alignment; +import com.smartgwt.client.types.TitleOrientation; +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 org.rhq.enterprise.gui.coregui.client.components.wizard.WizardStep; + +/** + * @author John Mazzitelli + */ +public class BundleSummaryStep implements WizardStep { + + private DynamicForm form; + private final AbstractBundleCreateWizard wizard; + + public BundleSummaryStep(AbstractBundleCreateWizard bundleCreationWizard) { + this.wizard = bundleCreationWizard; + } + + public Canvas getCanvas() { + TextItem nameTextItem; + TextItem versionTextItem; + TextAreaItem descriptionTextAreaItem; + TextItem bundleTypeTextItem; + + form = new DynamicForm(); + form.setPadding(20); + form.setWidth100(); + form.setNumCols(2); + + bundleTypeTextItem = new TextItem("bundleTypeItem", "Bundle Type"); + bundleTypeTextItem.setValue(wizard.getBundleType().getName()); + bundleTypeTextItem.setDisabled(true); + bundleTypeTextItem.setTitleAlign(Alignment.LEFT); + + nameTextItem = new TextItem("name", "Name"); + nameTextItem.setValue(wizard.getBundleName()); + nameTextItem.setDisabled(true); + nameTextItem.setTitleAlign(Alignment.LEFT); + + versionTextItem = new TextItem("version", "Version"); + versionTextItem.setValue(wizard.getBundleVersionString()); + versionTextItem.setDisabled(true); + versionTextItem.setTitleAlign(Alignment.LEFT); + + descriptionTextAreaItem = new TextAreaItem("description", "Description"); + descriptionTextAreaItem.setValue(wizard.getBundleDescription()); + descriptionTextAreaItem.setDisabled(true); + descriptionTextAreaItem.setTitleOrientation(TitleOrientation.TOP); + descriptionTextAreaItem.setColSpan(2); + descriptionTextAreaItem.setWidth(300); + + form.setItems(bundleTypeTextItem, nameTextItem, versionTextItem, descriptionTextAreaItem); + + return form; + } + + public boolean nextPage() { + return true; // this is the last page, we are done + } + + public String getName() { + return "Summary"; + } +} diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleUploadDataStep.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleUploadDataStep.java index 2a6a7c5..793cd5a 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleUploadDataStep.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/create/BundleUploadDataStep.java @@ -46,7 +46,6 @@ public class BundleUploadDataStep implements WizardStep { private final AbstractBundleCreateWizard wizard; private final BundleGWTServiceAsync bundleServer = GWTServiceLookup.getBundleService(); private DynamicForm form; - private Map<String, Boolean> allFilesStatus;
public BundleUploadDataStep(AbstractBundleCreateWizard bundleCreationWizard) { this.wizard = bundleCreationWizard; @@ -63,14 +62,12 @@ public class BundleUploadDataStep implements WizardStep { new AsyncCallback<HashMap<String, Boolean>>() {
public void onSuccess(HashMap<String, Boolean> result) { - allFilesStatus = result; + wizard.setAllBundleFilesStatus(result); prepareForm(layout); - enableNextButtonWhenAppropriate(); }
public void onFailure(Throwable caught) { - allFilesStatus = null; - enableNextButtonWhenAppropriate(); + wizard.setAllBundleFilesStatus(null); CoreGUI.getErrorHandler().handleError("Cannot obtain bundle file information from server", caught); } }); @@ -80,33 +77,33 @@ public class BundleUploadDataStep implements WizardStep { }
public boolean nextPage() { - return true; // TODO: Implement this method. + return isFinished(); }
public String getName() { return "Upload Bundle Files"; }
- public boolean isNextEnabled() { - if (this.allFilesStatus == null) { + private boolean isFinished() { + if (wizard.getAllBundleFilesStatus() == null) { return false; } - if (this.allFilesStatus.containsValue(Boolean.FALSE)) { + if (wizard.getAllBundleFilesStatus().containsValue(Boolean.FALSE)) { return false; } return true; }
- public boolean isPreviousEnabled() { - return true; - } + private void prepareForm(VLayout layout) { + // if there are no files to upload, immediately skip this step + final HashMap<String, Boolean> allFilesStatus = wizard.getAllBundleFilesStatus();
- private void enableNextButtonWhenAppropriate() { - this.wizard.getView().getNextButton().setDisabled(!isNextEnabled()); - } + if (allFilesStatus != null && allFilesStatus.size() == 0) { + // TODO: do something to tell the user they don't have to do anything for this step + return; + }
- private void prepareForm(VLayout layout) { - for (Map.Entry<String, Boolean> entry : this.allFilesStatus.entrySet()) { + for (Map.Entry<String, Boolean> entry : allFilesStatus.entrySet()) { HLayout formLayout = new HLayout(); layout.addMember(formLayout);
@@ -133,7 +130,6 @@ public class BundleUploadDataStep implements WizardStep { CoreGUI.getMessageCenter().notify( new Message("Failed to upload bundle file", results, Message.Severity.Error)); } - enableNextButtonWhenAppropriate(); } }); uploadForm.addFormSubmitFailedHandler(new FormSubmitFailedHandler() { @@ -142,7 +138,6 @@ public class BundleUploadDataStep implements WizardStep { allFilesStatus.put(uploadForm.getName(), Boolean.FALSE); CoreGUI.getMessageCenter().notify( new Message("Failed to upload file", null, Message.Severity.Error)); - enableNextButtonWhenAppropriate(); } });
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java index c257909..5743653 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java @@ -47,9 +47,9 @@ public interface BundleGWTService extends RemoteService {
BundleVersion createBundleVersion(int bundleId, String name, String version, String recipe) throws Exception;
- void deleteBundle(int bundleId); + void deleteBundle(int bundleId) throws Exception;
- void deleteBundleVersion(int bundleVersionId); + void deleteBundleVersion(int bundleVersionId, boolean deleteBundleIfEmpty) throws Exception;
PageList<Bundle> findBundlesByCriteria(BundleCriteria criteria) throws Exception;
@@ -60,7 +60,7 @@ public interface BundleGWTService extends RemoteService {
HashMap<String, Boolean> getAllBundleVersionFilenames(int bundleVersionId) throws Exception;
- ArrayList<BundleType> getAllBundleTypes(); + ArrayList<BundleType> getAllBundleTypes() throws Exception;
BundleDeployment scheduleBundleDeployment(int bundleDeployDefinitionId, int resourceId) throws Exception; } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java index 25eba1c..5473a94 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java @@ -89,7 +89,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl implements Bund return SerialUtility.prepare(results, "createBundleVersion"); }
- public void deleteBundle(int bundleId) { + public void deleteBundle(int bundleId) throws Exception { try { bundleManager.deleteBundle(getSessionSubject(), bundleId); } catch (Exception e) { @@ -97,15 +97,15 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl implements Bund } }
- public void deleteBundleVersion(int bundleVersionId) { + public void deleteBundleVersion(int bundleVersionId, boolean deleteBundleIfEmpty) throws Exception { try { - bundleManager.deleteBundleVersion(getSessionSubject(), bundleVersionId); + bundleManager.deleteBundleVersion(getSessionSubject(), bundleVersionId, deleteBundleIfEmpty); } catch (Exception e) { throw new RuntimeException(ThrowableUtil.getAllMessages(e)); } }
- public PageList<Bundle> findBundlesByCriteria(BundleCriteria criteria) { + public PageList<Bundle> findBundlesByCriteria(BundleCriteria criteria) throws Exception { try { PageList<Bundle> results = bundleManager.findBundlesByCriteria(getSessionSubject(), criteria); return SerialUtility.prepare(results, "findBundlesByCriteria"); @@ -114,7 +114,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl implements Bund } }
- public PageList<BundleVersion> findBundleVersionsByCriteria(BundleVersionCriteria criteria) { + public PageList<BundleVersion> findBundleVersionsByCriteria(BundleVersionCriteria criteria) throws Exception { try { PageList<BundleVersion> results = bundleManager.findBundleVersionsByCriteria(getSessionSubject(), criteria); return SerialUtility.prepare(results, "findBundleVersionsByCriteria"); @@ -124,7 +124,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl implements Bund }
public PageList<BundleWithLatestVersionComposite> findBundlesWithLastestVersionCompositesByCriteria( - BundleCriteria criteria) { + BundleCriteria criteria) throws Exception { try { PageList<BundleWithLatestVersionComposite> results; results = bundleManager.findBundlesWithLastestVersionCompositesByCriteria(getSessionSubject(), criteria); @@ -134,7 +134,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl implements Bund } }
- public ArrayList<BundleType> getAllBundleTypes() { + public ArrayList<BundleType> getAllBundleTypes() throws Exception { try { ArrayList<BundleType> bundleTypes = new ArrayList<BundleType>(); bundleTypes.addAll(bundleManager.getAllBundleTypes(getSessionSubject())); 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 440eee6..e52e3b6 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 @@ -674,7 +674,7 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot }
for (BundleVersion bv : bundle.getBundleVersions()) { - bundleManager.deleteBundleVersion(subject, bv.getId()); + bundleManager.deleteBundleVersion(subject, bv.getId(), false); }
// we need to whack the Repo once the Bundle no longer refers to it @@ -687,23 +687,28 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot }
@RequiredPermission(Permission.MANAGE_INVENTORY) - public void deleteBundleVersion(Subject subject, int bundleVersionId) throws Exception { + public void deleteBundleVersion(Subject subject, int bundleVersionId, boolean deleteBundleIfEmpty) throws Exception { BundleVersion bundleVersion = this.entityManager.find(BundleVersion.class, bundleVersionId); if (null == bundleVersion) { return; }
- int bundleId = bundleVersion.getBundle().getId(); + int bundleId = 0; + if (deleteBundleIfEmpty) { + bundleId = bundleVersion.getBundle().getId(); // note that we lazy load this if we never plan to delete the bundle + }
// remove the bundle version - cascade remove the deploy defs which will cascade remove the deployments. this.entityManager.remove(bundleVersion); - this.entityManager.flush();
- Query q = entityManager.createNamedQuery(BundleVersion.QUERY_FIND_VERSION_INFO_BY_BUNDLE_ID); - q.setParameter("bundleId", bundleId); - if (q.getResultList().size() == 0) { - // there are no more bundle versions left, blow away the bundle and all repo/bundle files associated with it - deleteBundle(subject, bundleId); + if (deleteBundleIfEmpty) { + this.entityManager.flush(); + Query q = entityManager.createNamedQuery(BundleVersion.QUERY_FIND_VERSION_INFO_BY_BUNDLE_ID); + q.setParameter("bundleId", bundleId); + if (q.getResultList().size() == 0) { + // there are no more bundle versions left, blow away the bundle and all repo/bundle files associated with it + deleteBundle(subject, bundleId); + } }
return; diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java index b3a84ff..efde215 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java @@ -204,12 +204,15 @@ public interface BundleManagerRemote { * * @param subject * @param bundleVersionId + * @param deleteBundleIfEmpty if <code>true</code> and if this method deletes the last bundle version for its + * bundle, then that bundle entity itself will be completely purged * @throws Exception if any part of the removal fails. */ @WebMethod void deleteBundleVersion( // @WebParam(name = "subject") Subject subject, // - @WebParam(name = "bundleVersionId") int bundleVersionId) throws Exception; + @WebParam(name = "bundleVersionId") int bundleVersionId, // + @WebParam(name = "deleteBundleIfEmpty") boolean deleteBundleIfEmpty) throws Exception;
@WebMethod PageList<Bundle> findBundlesByCriteria( // diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java index 6521e5b..17d3c96 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java @@ -375,8 +375,8 @@ public class WebservicesManagerBean implements WebservicesRemote { bundleManager.deleteBundle(subject, bundleId); }
- public void deleteBundleVersion(Subject subject, int bundleVersionId) throws Exception { - bundleManager.deleteBundleVersion(subject, bundleVersionId); + public void deleteBundleVersion(Subject subject, int bundleVersionId, boolean deleteBundleIfEmpty) throws Exception { + bundleManager.deleteBundleVersion(subject, bundleVersionId, deleteBundleIfEmpty); }
public PageList<BundleDeployDefinition> findBundleDeployDefinitionsByCriteria(Subject subject, 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 833d844..0d99b17 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 @@ -295,7 +295,7 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase { BundleCriteria bCriteria = new BundleCriteria();
// delete the first one - this deletes the BV but the bundle should remain intact - bundleManager.deleteBundleVersion(overlord, bv2.getId()); + bundleManager.deleteBundleVersion(overlord, bv2.getId(), true); bvCriteria.addFilterId(bv2.getId()); PageList<BundleVersion> bvResults = bundleManager.findBundleVersionsByCriteria(overlord, bvCriteria); assert bvResults.size() == 0; @@ -304,7 +304,7 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase { assert bResults.size() == 1 : "Should not have deleted bundle yet, 1 version still exists";
// delete the second one - this deletes last BV thus the bundle should also get deleted - bundleManager.deleteBundleVersion(overlord, bv1.getId()); + bundleManager.deleteBundleVersion(overlord, bv1.getId(), true); bvCriteria.addFilterId(bv1.getId()); bvResults = bundleManager.findBundleVersionsByCriteria(overlord, bvCriteria); assert bvResults.size() == 0;
commit 0b503904be650eae0418dd646a617b4fed1c9e9e Author: John Mazzitelli mazz@redhat.com Date: Wed Mar 24 00:48:19 2010 -0400
get the wizard framework to know when the wizard is finished and to close the dialog when it is
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/wizard/WizardView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/wizard/WizardView.java index b30e6a7..e0f3f92 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/wizard/WizardView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/wizard/WizardView.java @@ -125,24 +125,23 @@ public class WizardView extends VLayout { cancelButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent clickEvent) { wizard.cancel(); - wizardWindow.destroy(); + closeDialog(); } }); previousButton = new IButton("Previous"); previousButton.setDisabled(true); previousButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent clickEvent) { - setStep(currentStep - 1); + decrementStep(); } }); nextButton = new IButton("Next"); - nextButton.setDisabled(true); nextButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent clickEvent) {
WizardStep step = wizard.getSteps().get(currentStep); if (step.nextPage()) { - setStep(currentStep + 1); + incrementStep(); } } }); @@ -154,18 +153,31 @@ public class WizardView extends VLayout {
}
- public void setStep(int stepIndex) { + private void setStep(int stepIndex) { currentStep = stepIndex; - stepLabel.setContents("Step " + (stepIndex + 1) + " of " + wizard.getSteps().size());
- WizardStep step = wizard.getSteps().get(currentStep); + List<WizardStep> wizardSteps = wizard.getSteps(); + + // determine if we are "finished" - that is, going past our last step + if (currentStep >= wizardSteps.size()) { + closeDialog(); + return; + } + + stepLabel.setContents("Step " + (stepIndex + 1) + " of " + wizardSteps.size()); + + WizardStep step = wizardSteps.get(currentStep);
stepTitleLabel.setContents(step.getName());
previousButton.setDisabled(stepIndex == 0);
- boolean last = (stepIndex == (wizard.getSteps().size() - 1)); - nextButton.setDisabled(last); + boolean last = (stepIndex == (wizardSteps.size() - 1)); + if (last) { + nextButton.setTitle("Finish"); + } else { + nextButton.setTitle("Next"); + }
for (IButton button : customButtons) { buttonBar.removeMember(button); @@ -182,7 +194,7 @@ public class WizardView extends VLayout { if (currentCanvas != null) { contentLayout.removeMember(currentCanvas); } - currentCanvas = wizard.getSteps().get(currentStep).getCanvas(); + currentCanvas = wizardSteps.get(currentStep).getCanvas(); contentLayout.addMember(currentCanvas);
markForRedraw(); @@ -201,7 +213,7 @@ public class WizardView extends VLayout { wizardWindow.addCloseClickHandler(new CloseClickHandler() { public void onCloseClick(CloseClientEvent closeClientEvent) { wizard.cancel(); - wizardWindow.destroy(); + closeDialog(); } }); wizardWindow.addItem(this); @@ -232,4 +244,8 @@ public class WizardView extends VLayout { public void incrementStep() { setStep(currentStep + 1); } + + public void decrementStep() { + setStep(currentStep - 1); + } }
commit b39be42983f7a27932ff270c7ee5021e2ef38338 Author: John Mazzitelli mazz@redhat.com Date: Tue Mar 23 23:48:39 2010 -0400
remove the obsolete/unused isNext/PreviousEnabled methods from the steps classes
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/create/OperationParametersStep.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/create/OperationParametersStep.java index 6ae3921..42de0a4 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/create/OperationParametersStep.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/create/OperationParametersStep.java @@ -67,12 +67,4 @@ public class OperationParametersStep implements WizardStep { public Configuration getParameterConfiguration() { return configurationEditor != null ? configurationEditor.getConfiguration() : null; } - - public boolean isNextEnabled() { - return true; - } - - public boolean isPreviousEnabled() { - return true; - } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/create/OperationSchedulingStep.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/create/OperationSchedulingStep.java index e923b08..c1546a8 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/create/OperationSchedulingStep.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/create/OperationSchedulingStep.java @@ -42,7 +42,7 @@ import com.smartgwt.client.widgets.form.fields.SpacerItem; import com.smartgwt.client.widgets.form.fields.StaticTextItem; import com.smartgwt.client.widgets.form.fields.TimeItem; import com.smartgwt.client.widgets.form.validator.CustomValidator; -import org.rhq.enterprise.gui.coregui.client.CoreGUI; + import org.rhq.enterprise.gui.coregui.client.components.wizard.WizardStep;
/** @@ -66,12 +66,12 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { form.setWidth100(); form.setPadding(10); form.setNumCols(3); -// form.setColWidths("15%", "35%", "15%", "*"); + // form.setColWidths("15%", "35%", "15%", "*"); form.setValidateOnChange(true);
final RadioGroupItem start = new RadioGroupItem("start", "Start"); start.setColSpan(3); - start.setValueMap(enumValueMap(ExecutionSchedule.Start.class)); // "Immediately", "Future" + start.setValueMap(enumValueMap(ExecutionSchedule.Start.class)); // "Immediately", "Future" start.setRedrawOnChange(true); start.setValue("Immediately");
@@ -84,7 +84,7 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { });
RadioGroupItem recurr = new RadioGroupItem("recurr", "Recurrence"); - recurr.setValueMap(enumValueMap(ExecutionSchedule.Recurr.class)); // "Once", "EveryNMinutes", "Hourly", "Daily", "Weekly", "Monthly"); + recurr.setValueMap(enumValueMap(ExecutionSchedule.Recurr.class)); // "Once", "EveryNMinutes", "Hourly", "Daily", "Weekly", "Monthly"); recurr.setRedrawOnChange(true); recurr.setValue("Once"); recurr.setShowIfCondition(new FormItemIfFunction() { @@ -93,26 +93,23 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { } });
- - CanvasItem onceForm = new CanvasItem("once", "Run At"); onceForm.setShowTitle(false); onceForm.setCanvas(getOnceForm()); onceForm.setShowIfCondition(new FormItemIfFunction() { public boolean execute(FormItem formItem, Object o, DynamicForm dynamicForm) { - return !"Immediately".equals(form.getValueAsString("start")) && - ExecutionSchedule.Recurr.Once.name().equals(form.getValueAsString("recurr")); + return !"Immediately".equals(form.getValueAsString("start")) + && ExecutionSchedule.Recurr.Once.name().equals(form.getValueAsString("recurr")); } });
- CanvasItem everyNMinuteForm = new CanvasItem("everyNMinutesForm", "NMinutes"); everyNMinuteForm.setShowTitle(false); everyNMinuteForm.setCanvas(getEveryNMinutesForm()); everyNMinuteForm.setShowIfCondition(new FormItemIfFunction() { public boolean execute(FormItem formItem, Object o, DynamicForm dynamicForm) { - return !"Immediately".equals(form.getValueAsString("start")) && - ExecutionSchedule.Recurr.EveryNMinutes.name().equals(form.getValueAsString("recurr")); + return !"Immediately".equals(form.getValueAsString("start")) + && ExecutionSchedule.Recurr.EveryNMinutes.name().equals(form.getValueAsString("recurr")); } });
@@ -121,8 +118,8 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { hourlyForm.setCanvas(getHourlyForm()); hourlyForm.setShowIfCondition(new FormItemIfFunction() { public boolean execute(FormItem formItem, Object o, DynamicForm dynamicForm) { - return !"Immediately".equals(form.getValueAsString("start")) && - ExecutionSchedule.Recurr.Hourly.name().equals(form.getValueAsString("recurr")); + return !"Immediately".equals(form.getValueAsString("start")) + && ExecutionSchedule.Recurr.Hourly.name().equals(form.getValueAsString("recurr")); } });
@@ -136,7 +133,6 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { } });
- CanvasItem weeklyForm = new CanvasItem("weekly", "Weekly"); weeklyForm.setShowTitle(false); weeklyForm.setCanvas(getWeeklyForm()); @@ -212,12 +208,8 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { messageItem.setShowTitle(false); messageItem.setCellStyle("HeaderLabel");
- form.setItems(start, scheduleHeader, recurr, - onceForm, everyNMinuteForm, hourlyForm, dailyForm, weeklyForm, monthlyForm, - rangeHeader, startDate, end, endDate, - new SpacerItem(), messageItem); - - + form.setItems(start, scheduleHeader, recurr, onceForm, everyNMinuteForm, hourlyForm, dailyForm, weeklyForm, + monthlyForm, rangeHeader, startDate, end, endDate, new SpacerItem(), messageItem);
form.addItemChangedHandler(this); } @@ -255,7 +247,6 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { form.setGroupTitle("Every N Minutes"); form.addItemChangedHandler(this);
- form.setWrapItemTitles(false); form.setNumCols(2);
@@ -276,7 +267,6 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { form.setGroupTitle("Hourly At"); form.addItemChangedHandler(this);
- form.setWrapItemTitles(false); form.setNumCols(2);
@@ -289,7 +279,6 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { return form; }
- private DynamicForm getDailyForm() { DynamicForm form = new DynamicForm(); form.setValuesManager(valuesManager); @@ -308,7 +297,6 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { return form; }
- private DynamicForm getWeeklyForm() { DynamicForm form = new DynamicForm(); form.setValuesManager(valuesManager); @@ -317,7 +305,6 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { form.setGroupTitle("Weekly On"); form.addItemChangedHandler(this);
- form.setWrapItemTitles(false);
TimeItem timeOfDay = new TimeItem("timeOfDay", "Time Of Day"); @@ -347,7 +334,6 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { form.setGroupTitle("Monthly On"); form.addItemChangedHandler(this);
- IntegerItem dayItem = new IntegerItem(); dayItem.setName("dayOfMonth"); dayItem.setTitle("Day of Month"); @@ -370,21 +356,11 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { return "Schedule"; }
- public boolean isNextEnabled() { - return true; - } - - public boolean isPreviousEnabled() { - return true; - } - public void onItemChanged(ItemChangedEvent itemChangeEvent) {
- executionSchedule.setStart(ExecutionSchedule.Start.valueOf(valuesManager.getValueAsString("start"))); executionSchedule.setRecurr(ExecutionSchedule.Recurr.valueOf(valuesManager.getValueAsString("recurr")));
- Date onceDate = (Date) valuesManager.getValues().get("onceStartDate"); executionSchedule.setOnceDateTime(onceDate);
@@ -394,7 +370,6 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler {
executionSchedule.setTimeOfDay((Date) valuesManager.getValues().get("timeOfDay"));
- HashSet<ExecutionSchedule.DayOfWeek> selectedDays = new HashSet<ExecutionSchedule.DayOfWeek>(); //.noneOf(ExecutionSchedule.DayOfWeek.class); for (ExecutionSchedule.DayOfWeek d : EnumSet.allOf(ExecutionSchedule.DayOfWeek.class)) { if (valuesManager.getValues().containsKey(d.name())) { @@ -403,29 +378,24 @@ public class OperationSchedulingStep implements WizardStep, ItemChangedHandler { } executionSchedule.setDaysOfWeek(selectedDays);
- - executionSchedule.setDayOfMonth(Integer.parseInt(valuesManager.getValueAsString("dayOfMonth")));
- - - executionSchedule.setStartDate((Date)valuesManager.getValues().get("startDate")); + executionSchedule.setStartDate((Date) valuesManager.getValues().get("startDate"));
if ("Never".equals(valuesManager.getValues().get("endType"))) { executionSchedule.setEndDate(null); } else { - executionSchedule.setEndDate((Date)valuesManager.getValues().get("endDate")); + executionSchedule.setEndDate((Date) valuesManager.getValues().get("endDate")); }
- form.setValue("message",executionSchedule.getMessage()); + form.setValue("message", executionSchedule.getMessage()); }
- - private LinkedHashMap<String,String> enumValueMap(Class<? extends Enum> e) { - LinkedHashMap<String,String> map = new LinkedHashMap<String, String>(); + private LinkedHashMap<String, String> enumValueMap(Class<? extends Enum> e) { + LinkedHashMap<String, String> map = new LinkedHashMap<String, String>(); for (Object o : EnumSet.allOf(e)) { Enum v = (Enum) o; - map.put(v.name(),v.name()); // localize + map.put(v.name(), v.name()); // localize } return map; } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ConfigurationStep.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ConfigurationStep.java index 33ddebe..0d466d3 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ConfigurationStep.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ConfigurationStep.java @@ -18,15 +18,10 @@ */ package org.rhq.enterprise.gui.coregui.client.inventory.resource.factory;
-import java.util.Map; - import com.smartgwt.client.widgets.Canvas; -import com.smartgwt.client.widgets.form.DynamicForm; -import com.smartgwt.client.widgets.form.fields.SelectItem;
import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.configuration.definition.ConfigurationDefinition; -import org.rhq.core.domain.configuration.definition.ConfigurationTemplate; import org.rhq.enterprise.gui.coregui.client.components.configuration.ConfigurationEditor; import org.rhq.enterprise.gui.coregui.client.components.wizard.WizardStep;
@@ -61,14 +56,6 @@ public class ConfigurationStep implements WizardStep { return "Edit Configuration"; }
- public boolean isPreviousEnabled() { - return true; - } - - public boolean isNextEnabled() { - return false; - } - public Configuration getConfiguration() { return editor.getConfiguration(); } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ConfigurationTemplateStep.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ConfigurationTemplateStep.java index eee603a..a9182ee 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ConfigurationTemplateStep.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ConfigurationTemplateStep.java @@ -51,7 +51,7 @@ public class ConfigurationTemplateStep implements WizardStep { TextItem nameItem = new TextItem("resourceName", "Resource Name"); nameItem.setRequired(true);
- SelectItem templateSelect = new SelectItem("template","Template"); + SelectItem templateSelect = new SelectItem("template", "Template");
ConfigurationDefinition definition = wizard.getConfigurationDefinition();
@@ -77,14 +77,6 @@ public class ConfigurationTemplateStep implements WizardStep { return "Select a Template"; }
- public boolean isPreviousEnabled() { - return false; - } - - public boolean isNextEnabled() { - return true; - } - public Configuration getConfiguration() { return templates.get(form.getValueAsString("template")).createConfiguration(); }
commit 24b38a17ceca586ad9df9bf5b2e6209e2c64a4af Author: John Mazzitelli mazz@redhat.com Date: Tue Mar 23 23:28:24 2010 -0400
delete the bundle if, when deleting a BV it turns out there are no more bundle versions for that bundle this includes a unit test to make sure deleting BVs work
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 bab247a..440eee6 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 @@ -677,7 +677,7 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot bundleManager.deleteBundleVersion(subject, bv.getId()); }
- // we need to whack the Repo once the Bundle no longe refers to it + // we need to whack the Repo once the Bundle no longer refers to it Repo bundleRepo = bundle.getRepo();
this.entityManager.remove(bundle); @@ -686,14 +686,26 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot repoManager.deleteRepo(subject, bundleRepo.getId()); }
- public void deleteBundleVersion(Subject subject, int bundleVersionId) { + @RequiredPermission(Permission.MANAGE_INVENTORY) + public void deleteBundleVersion(Subject subject, int bundleVersionId) throws Exception { BundleVersion bundleVersion = this.entityManager.find(BundleVersion.class, bundleVersionId); if (null == bundleVersion) { return; }
- // remove the bundle version, this will cascade remove the deploy defs which will cascade remove - // the deployments. + int bundleId = bundleVersion.getBundle().getId(); + + // remove the bundle version - cascade remove the deploy defs which will cascade remove the deployments. this.entityManager.remove(bundleVersion); + this.entityManager.flush(); + + Query q = entityManager.createNamedQuery(BundleVersion.QUERY_FIND_VERSION_INFO_BY_BUNDLE_ID); + q.setParameter("bundleId", bundleId); + if (q.getResultList().size() == 0) { + // there are no more bundle versions left, blow away the bundle and all repo/bundle files associated with it + deleteBundle(subject, bundleId); + } + + return; } } 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 c2284d9..833d844 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 @@ -45,11 +45,13 @@ import org.rhq.core.domain.bundle.BundleVersion; import org.rhq.core.domain.bundle.composite.BundleWithLatestVersionComposite; import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.configuration.PropertySimple; +import org.rhq.core.domain.content.Architecture; import org.rhq.core.domain.content.Package; import org.rhq.core.domain.content.PackageType; import org.rhq.core.domain.content.PackageVersion; import org.rhq.core.domain.content.Repo; import org.rhq.core.domain.criteria.BundleCriteria; +import org.rhq.core.domain.criteria.BundleFileCriteria; import org.rhq.core.domain.criteria.BundleVersionCriteria; import org.rhq.core.domain.resource.Agent; import org.rhq.core.domain.resource.InventoryStatus; @@ -269,6 +271,49 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase { }
@Test(enabled = TESTS_ENABLED) + public void testDeleteBundleVersion() 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(), "testfile", "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; + + BundleVersionCriteria bvCriteria = new BundleVersionCriteria(); + BundleCriteria bCriteria = new BundleCriteria(); + + // delete the first one - this deletes the BV but the bundle should remain intact + bundleManager.deleteBundleVersion(overlord, bv2.getId()); + bvCriteria.addFilterId(bv2.getId()); + PageList<BundleVersion> bvResults = bundleManager.findBundleVersionsByCriteria(overlord, bvCriteria); + assert bvResults.size() == 0; + bCriteria.addFilterId(b1.getId()); + PageList<Bundle> bResults = bundleManager.findBundlesByCriteria(overlord, bCriteria); + assert bResults.size() == 1 : "Should not have deleted bundle yet, 1 version still exists"; + + // delete the second one - this deletes last BV thus the bundle should also get deleted + bundleManager.deleteBundleVersion(overlord, bv1.getId()); + bvCriteria.addFilterId(bv1.getId()); + bvResults = bundleManager.findBundleVersionsByCriteria(overlord, bvCriteria); + assert bvResults.size() == 0; + bCriteria.addFilterId(b1.getId()); + bResults = bundleManager.findBundlesByCriteria(overlord, bCriteria); + assert bResults.size() == 0 : "Should have deleted bundle since no versions exists anymore"; + } + + @Test(enabled = TESTS_ENABLED) public void testCreateBundleVersionOrdering() throws Exception { Bundle b1 = createBundle("one"); assertNotNull(b1);
commit 1531142b056f293af50fddc51352cda5a4132869 Author: John Mazzitelli mazz@redhat.com Date: Tue Mar 23 23:27:44 2010 -0400
fix bundle file criteria - name of field should be "general"Package
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleFileCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleFileCriteria.java index 8341922..8abe728 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleFileCriteria.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleFileCriteria.java @@ -41,7 +41,7 @@ public class BundleFileCriteria extends Criteria {
private boolean fetchBundleVersion; private boolean fetchPackageVersion; - private boolean fetchPackage; + private boolean fetchGeneralPackage;
public BundleFileCriteria() { super(); @@ -76,8 +76,8 @@ public class BundleFileCriteria extends Criteria { this.fetchBundleVersion = fetchBundleVersion; }
- public void fetchPackage(boolean fetchPackage) { - this.fetchPackage = fetchPackage; + public void fetchPackage(boolean fetchGeneralPackage) { + this.fetchGeneralPackage = fetchGeneralPackage; }
public void fetchPackageVersion(boolean fetchPackageVersion) {
rhq-commits@lists.fedorahosted.org