*
* @param context information
*/
public void execute(AdminCommandContext context) {
final ActionReport report = context.getActionReport();
// ensure we already have this resource
if (!isResourceExists(domain.getResources(), jndiName)) {
report.setMessage(localStrings.getLocalString(
"delete.mail.resource.notfound",
"A Mail resource named {0} does not exist.", jndiName));
report.setActionExitCode(ActionReport.ExitCode.FAILURE);
return;
}
if (environment.isDas()) {
if ("domain".equals(target)) {
if (resourceUtil.getTargetsReferringResourceRef(jndiName).size() > 0) {
report.setMessage(localStrings.getLocalString("delete.mail.resource.resource-ref.exist",
"mail-resource [ {0} ] is referenced in an" +
"instance/cluster target, Use delete-resource-ref on appropriate target",
jndiName));
report.setActionExitCode(ActionReport.ExitCode.FAILURE);
return;
}
} else {
if (!resourceUtil.isResourceRefInTarget(jndiName, target)) {
report.setMessage(localStrings.getLocalString("delete.mail.resource.no.resource-ref",
"mail-resource [ {0} ] is not referenced in target [ {1} ]",
jndiName, target));
report.setActionExitCode(ActionReport.ExitCode.FAILURE);
return;
}
if (resourceUtil.getTargetsReferringResourceRef(jndiName).size() > 1) {
report.setMessage(localStrings.getLocalString("delete.mail.resource.multiple.resource-refs",
"mail-resource [ {0} ] is referenced in multiple " +
"instance/cluster targets, Use delete-resource-ref on appropriate target",
jndiName));
report.setActionExitCode(ActionReport.ExitCode.FAILURE);
return;
}
}
}
try {
// delete resource-ref
resourceUtil.deleteResourceRef(jndiName, target);
// delete java-mail-resource
ConfigSupport.apply(new SingleConfigCode<Resources>() {
public Object run(Resources param) throws PropertyVetoException,
TransactionFailure {
MailResource resource = (MailResource)
ResourceUtil.getBindableResourceByName(domain.getResources(), jndiName);
return param.getResources().remove(resource);
}
}, domain.getResources());
report.setMessage(localStrings.getLocalString(
"delete.mail.resource.success",
"Mail resource {0} deleted", jndiName));
report.setActionExitCode(ActionReport.ExitCode.SUCCESS);
} catch (TransactionFailure tfe) {
report.setMessage(localStrings.getLocalString(
"delete.mail.resource.failed",
"Unable to delete mail resource {0}", jndiName) + " " +
tfe.getLocalizedMessage());
report.setActionExitCode(ActionReport.ExitCode.FAILURE);
report.setFailureCause(tfe);
}
}