super.sfUpdate();
Reference componentId = sfCompleteName(); if (sfIsTerminated) { throw new SmartFrogUpdateException(MessageUtil.formatMessage(MSG_DEPLOY_COMP_TERMINATED, componentId.toString())); } if (updateAbandoned) throw new SmartFrogUpdateException("update already abandoned " + componentId.toString());
    public synchronized void sfUpdate() throws RemoteException, SmartFrogException {        super.sfUpdate();        // detach and terminate all children  which must disappear        for (Enumeration e = childrenToTerminate.elements(); e.hasMoreElements(); ) {            Prim p = (Prim)e.nextElement();            p.sfDetachAndTerminate(TerminationRecord.normal(sfCompleteNameSafe()));        }        // make sure that the children are in the new context, replacing the ComponentDescriptions        for (Enumeration e = childrenToUpdate.elements(); e.hasMoreElements(); ) {            Prim p = (Prim) e.nextElement();            newContext.put(sfContext.sfAttributeKeyFor(p), p);        }        // update context        sfContext = newContext;        for (Enumeration e = childrenToUpdate.elements(); e.hasMoreElements(); ) {            Update u = (Update) e.nextElement();            u.sfUpdate();        }        // create new children,        for (Enumeration e = childrenToCreate.elements(); e.hasMoreElements(); ) {            Object name = e.nextElement();            ComponentDescription d = (ComponentDescription) newContext.get(name);            sfDeployComponentDescription(name, this, d, null);        }        //        // failure considered terminal    }