/**
   * Process a {@link XADLHostingEvent}.
   *
   * @param event
   */
  private void process(XADLHostingEvent event) {
    IHostedArchInstance instance =
        modelRoot.getHostedArchInstance(event.getArchitectureRuntimeId());
    IHost host =
        DBLUtils.createHost(instance, event.getHostId(), modelRoot.getHostpropertyContext());

    switch (event.getXadlEventType()) {
      case ADD:
        logger.info("Adding components/connectors to host " + event.getHostId());
        for (String id : event.getHostedComponentIds()) {
          IElementRef ref = DBLUtils.createElementRef(id, modelRoot.getHostpropertyContext());
          elementRefIndex.put(id, ref);
          host.addHostsComponent(ref);
        }
        for (String id : event.getHostedConnectorIds()) {
          IElementRef ref = DBLUtils.createElementRef(id, modelRoot.getHostpropertyContext());
          elementRefIndex.put(id, ref);
          host.addHostsConnector(ref);
        }
        for (String id : event.getHostedGroupIds()) {
          IElementRef ref = DBLUtils.createElementRef(id, modelRoot.getHostpropertyContext());
          elementRefIndex.put(id, ref);
          host.addHostsGroup(ref);
        }
        // subhosts are currently not supported
        break;
      case REMOVE:
        logger.info("Removing components/connectors from host " + event.getHostId());
        for (String id : event.getHostedComponentIds()) {
          if (elementRefIndex.containsKey(id)) {
            IElementRef ref = elementRefIndex.get(id);
            host.removeHostsComponent(ref);
          }
        }
        for (String id : event.getHostedConnectorIds()) {
          if (elementRefIndex.containsKey(id)) {
            IElementRef ref = elementRefIndex.get(id);
            host.removeHostsConnector(ref);
          }
        }
        for (String id : event.getHostedGroupIds()) {
          if (elementRefIndex.containsKey(id)) {
            IElementRef ref = elementRefIndex.get(id);
            host.removeHostsGroup(ref);
          }
        }
        // subhosts are currently not supported
        break;
      case UPDATE:
      default:
        // not supported
        break;
    }
  }