private void handleButton1Request(CachedPolicy cachedPolicy) throws ModelControlException { Referral deleted = null; String origName = (String) getPageSessionAttribute(EDIT_REFERRAL_NAME); Policy policy = cachedPolicy.getPolicy(); try { Referral referral = createReferral(); if (referral != null) { String name = (String) propertySheetModel.getValue(REFERRAL_NAME); if (origName.equals(name)) { policy.replaceReferral(name, referral); } else { deleted = policy.removeReferral(origName); policy.addReferral(name, referral); } deleted = null; setInlineAlertMessage(CCAlert.TYPE_INFO, "message.information", "policy.referral.updated"); cachedPolicy.setPolicyModified(true); } } catch (NameAlreadyExistsException e) { setInlineAlertMessage(CCAlert.TYPE_ERROR, "message.error", getModel().getErrorString(e)); } catch (InvalidNameException e) { setInlineAlertMessage(CCAlert.TYPE_ERROR, "message.error", getModel().getErrorString(e)); } catch (NameNotFoundException e) { setInlineAlertMessage(CCAlert.TYPE_ERROR, "message.error", getModel().getErrorString(e)); } catch (AMConsoleException e) { setInlineAlertMessage(CCAlert.TYPE_ERROR, "message.error", e.getMessage()); } finally { if (deleted != null) { try { policy.addReferral(origName, deleted); } catch (NameAlreadyExistsException e) { debug.warning("ReferralEditViewBean.handleButton1Request", e); } catch (InvalidNameException e) { debug.warning("ReferralEditViewBean.handleButton1Request", e); } } } forwardTo(); }