protected void updateLink(
     AttributeInterface currentAttribute, String[] destinations, int destType) {
   if (destinations.length != 3) {
     throw new RuntimeException("Destinazioni non riconosciute");
   }
   SymbolicLink symbolicLink = new SymbolicLink();
   switch (destType) {
     case (SymbolicLink.CONTENT_TYPE):
       symbolicLink.setDestinationToContent(destinations[1]);
       break;
     case (SymbolicLink.CONTENT_ON_PAGE_TYPE):
       symbolicLink.setDestinationToContentOnPage(destinations[1], destinations[2]);
       break;
     case SymbolicLink.PAGE_TYPE:
       symbolicLink.setDestinationToPage(destinations[2]);
       break;
     case SymbolicLink.URL_TYPE:
       symbolicLink.setDestinationToUrl(destinations[0]);
       break;
     default:
       symbolicLink.setDestinationToContent("");
       break;
   }
   ((LinkAttribute) currentAttribute).setSymbolicLink(symbolicLink);
 }
 protected void removeLink(AttributeInterface attribute, HttpServletRequest request) {
   HttpSession session = request.getSession();
   if (attribute instanceof CompositeAttribute) {
     String includedAttributeName =
         (String) session.getAttribute(INCLUDED_ELEMENT_NAME_SESSION_PARAM);
     AttributeInterface includedAttribute =
         ((CompositeAttribute) attribute).getAttribute(includedAttributeName);
     removeLink(includedAttribute, request);
   } else if (attribute instanceof LinkAttribute) {
     ((LinkAttribute) attribute).setSymbolicLink(null);
     ((LinkAttribute) attribute).getTextMap().clear();
   } else if (attribute instanceof MonoListAttribute) {
     Integer elementIndex = (Integer) session.getAttribute(LIST_ELEMENT_INDEX_SESSION_PARAM);
     AttributeInterface attributeElement =
         ((MonoListAttribute) attribute).getAttribute(elementIndex.intValue());
     removeLink(attributeElement, request);
   }
 }
 @Override
 public void initSessionParams(ILinkAttributeAction action, HttpServletRequest request) {
   AttributeInterface attribute = null;
   HttpSession session = request.getSession();
   if (null != action.getParentAttributeName()) {
     attribute =
         (AttributeInterface) getContent(request).getAttribute(action.getParentAttributeName());
     session.setAttribute(ATTRIBUTE_NAME_SESSION_PARAM, action.getParentAttributeName());
     session.setAttribute(INCLUDED_ELEMENT_NAME_SESSION_PARAM, action.getAttributeName());
   } else {
     attribute = (AttributeInterface) getContent(request).getAttribute(action.getAttributeName());
     session.setAttribute(ATTRIBUTE_NAME_SESSION_PARAM, action.getAttributeName());
   }
   if (action.getElementIndex() >= 0) {
     session.setAttribute(LIST_ELEMENT_INDEX_SESSION_PARAM, new Integer(action.getElementIndex()));
   }
   session.setAttribute(LINK_LANG_CODE_SESSION_PARAM, action.getLangCode());
   LinkAttribute linkAttribute = (LinkAttribute) getLinkAttribute(attribute, request);
   session.setAttribute(SYMBOLIC_LINK_SESSION_PARAM, linkAttribute.getSymbolicLink());
 }