java/code/src/com/redhat/rhn/frontend/action/BaseEditAction.java | 11 +++++-
java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/BaseTreeAction.java | 16 +++++++++-
java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/TreeDeleteAction.java | 6 ++-
java/code/src/com/redhat/rhn/frontend/action/systems/provisioning/BasePreservationListEditAction.java | 5 ++-
java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml | 3 +
java/code/src/com/redhat/rhn/manager/kickstart/cobbler/CobblerDistroEditCommand.java | 5 ++-
java/code/src/com/redhat/rhn/manager/kickstart/tree/TreeCreateOperation.java | 15 +++++++++
java/code/src/com/redhat/rhn/manager/kickstart/tree/TreeEditOperation.java | 1
8 files changed, 54 insertions(+), 8 deletions(-)
New commits:
commit aa541c21fe2239fd56bc7843749c1096d09577d1
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Wed Apr 1 18:31:01 2009 -0400
462593 - fixing issue where creating or renaming a profile with a name that already exists would give ISE
diff --git a/java/code/src/com/redhat/rhn/frontend/action/BaseEditAction.java b/java/code/src/com/redhat/rhn/frontend/action/BaseEditAction.java
index 5b7a7ab..9208fc0 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/BaseEditAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/BaseEditAction.java
@@ -58,8 +58,12 @@ public abstract class BaseEditAction extends RhnAction {
getStrutsDelegate().saveMessages(request, errors);
}
else {
- processCommandSetters(opr, form);
- ValidatorError verrors = opr.store();
+ ValidatorError verrors = processCommandSetters(opr, form);
+
+ if (verrors == null) {
+ verrors = opr.store();
+ }
+
if (verrors != null) {
ActionErrors storeErrors =
RhnValidationHelper.validatorErrorToActionErrors(verrors);
@@ -107,8 +111,9 @@ public abstract class BaseEditAction extends RhnAction {
* object for storage. This is used on the submit type of request.
* @param opr to process setters on.
* @param form web form containing values
+ * @return TODO
*/
- protected abstract void processCommandSetters(PersistOperation opr,
+ protected abstract ValidatorError processCommandSetters(PersistOperation opr,
DynaActionForm form);
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/BaseTreeAction.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/BaseTreeAction.java
index c67ab0d..38b3db6 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/BaseTreeAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/BaseTreeAction.java
@@ -14,6 +14,7 @@
*/
package com.redhat.rhn.frontend.action.kickstart.tree;
+import com.redhat.rhn.common.validator.ValidatorError;
import com.redhat.rhn.domain.channel.Channel;
import com.redhat.rhn.domain.channel.ChannelFactory;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
@@ -77,8 +78,20 @@ public abstract class BaseTreeAction extends BaseEditAction {
}
- protected void processCommandSetters(PersistOperation operation, DynaActionForm form) {
+ protected ValidatorError processCommandSetters(PersistOperation operation,
+ DynaActionForm form) {
BaseTreeEditOperation bte = (BaseTreeEditOperation) operation;
+
+ String label = form.getString(LABEL);
+ if (label != bte.getTree().getLabel()) {
+ KickstartableTree tree = KickstartFactory.lookupKickstartTreeByLabel(
+ label, bte.getUser().getOrg());
+ if (tree != null) {
+ return new ValidatorError("distribution.tree.exists", tree.getLabel());
+ }
+ }
+
+
bte.setBasePath(form.getString(BASE_PATH));
Long channelId = (Long) form.get(CHANNEL_ID);
Channel c = ChannelFactory.lookupByIdAndUser(channelId, operation.getUser());
@@ -87,6 +100,7 @@ public abstract class BaseTreeAction extends BaseEditAction {
KickstartInstallType type = KickstartFactory.
lookupKickstartInstallTypeByLabel(form.getString(INSTALL_TYPE));
bte.setInstallType(type);
+ return null;
}
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/TreeDeleteAction.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/TreeDeleteAction.java
index 5328b1d..9f77cd7 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/TreeDeleteAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/tree/TreeDeleteAction.java
@@ -15,6 +15,7 @@
package com.redhat.rhn.frontend.action.kickstart.tree;
import com.redhat.rhn.common.db.datasource.DataResult;
+import com.redhat.rhn.common.validator.ValidatorError;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.manager.PersistOperation;
@@ -68,8 +69,9 @@ public class TreeDeleteAction extends BaseTreeAction {
/**
* {@inheritDoc}
*/
- protected void processCommandSetters(PersistOperation operation, DynaActionForm form) {
- // NOOOP For delete
+ protected ValidatorError processCommandSetters(PersistOperation operation,
+ DynaActionForm form) {
+ return null;
}
}
diff --git a/java/code/src/com/redhat/rhn/frontend/action/systems/provisioning/BasePreservationListEditAction.java b/java/code/src/com/redhat/rhn/frontend/action/systems/provisioning/BasePreservationListEditAction.java
index fcaeafc..5f16778 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/systems/provisioning/BasePreservationListEditAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/systems/provisioning/BasePreservationListEditAction.java
@@ -14,6 +14,7 @@
*/
package com.redhat.rhn.frontend.action.systems.provisioning;
+import com.redhat.rhn.common.validator.ValidatorError;
import com.redhat.rhn.frontend.action.BaseEditAction;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.manager.PersistOperation;
@@ -41,10 +42,12 @@ public abstract class BasePreservationListEditAction extends BaseEditAction {
rctx.getRequest().setAttribute(FILE_LIST, bopr.getFileList());
}
- protected void processCommandSetters(PersistOperation opr, DynaActionForm form) {
+ protected ValidatorError processCommandSetters(PersistOperation opr,
+ DynaActionForm form) {
BaseFileListEditCommand bopr = (BaseFileListEditCommand) opr;
bopr.setLabel(form.getString(LABEL));
bopr.updateFiles(form.getString(FILES_STRING));
+ return null;
}
protected void processFormValues(PersistOperation opr, DynaActionForm form) {
diff --git a/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml b/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
index 91e9d0a..e0038f7 100644
--- a/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
+++ b/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
@@ -8076,6 +8076,9 @@ Follow this url to see the full list of inactive systems:
<context context-type="sourcefile">/channels/manage/Edit</context>
</context-group>
</trans-unit>
+ <trans-unit id="distribution.tree.exists">
+ <source>A distribution already exists with the name '{0}'. Please select another name.</source>
+ </trans-unit>
<trans-unit id="api.channel.delete.redhat">
<source>Red Hat Channels cannot be deleted, only custom channels can.</source>
</trans-unit>
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/cobbler/CobblerDistroEditCommand.java b/java/code/src/com/redhat/rhn/manager/kickstart/cobbler/CobblerDistroEditCommand.java
index 4edd4b8..e0c0c39 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/cobbler/CobblerDistroEditCommand.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/cobbler/CobblerDistroEditCommand.java
@@ -48,7 +48,10 @@ public class CobblerDistroEditCommand extends CobblerDistroCommand {
Distro d = Distro.lookupById(
CobblerXMLRPCHelper.getConnection(user.getLogin()), tree.getCobblerId());
- d.setName(makeCobblerName(tree));
+ String newName = makeCobblerName(tree);
+ if (!d.getName().equals(newName)) {
+ d.setName(newName);
+ }
updateCobblerFields();
return null;
}
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/tree/TreeCreateOperation.java b/java/code/src/com/redhat/rhn/manager/kickstart/tree/TreeCreateOperation.java
index f104e01..0463822 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/tree/TreeCreateOperation.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/tree/TreeCreateOperation.java
@@ -14,6 +14,7 @@
*/
package com.redhat.rhn.manager.kickstart.tree;
+import com.redhat.rhn.common.validator.ValidatorError;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
import com.redhat.rhn.domain.kickstart.KickstartableTree;
import com.redhat.rhn.domain.user.User;
@@ -47,4 +48,18 @@ public class TreeCreateOperation extends BaseTreeEditOperation {
return new CobblerDistroCreateCommand(this.tree, this.user);
}
+ /**
+ *
+ * {@inheritDoc}
+ */
+ public ValidatorError store() {
+ KickstartableTree tree = KickstartFactory.lookupKickstartTreeByLabel(
+ this.getTree().getLabel(), this.getUser().getOrg());
+ if (tree != null) {
+ return new ValidatorError("distribution.tree.exists", tree.getLabel());
+ }
+ return super.store();
+
+ }
+
}
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/tree/TreeEditOperation.java b/java/code/src/com/redhat/rhn/manager/kickstart/tree/TreeEditOperation.java
index 6ddca39..21b1757 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/tree/TreeEditOperation.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/tree/TreeEditOperation.java
@@ -61,5 +61,6 @@ public class TreeEditOperation extends BaseTreeEditOperation {
protected CobblerCommand getCobblerCommand() {
return new CobblerDistroEditCommand(this.tree, this.user);
}
+
}