/** * Process a {@link XADLHostPropertyEvent}. * * @param event */ private void process(XADLHostPropertyEvent event) { IHostedArchInstance instance = modelRoot.getHostedArchInstance(event.getArchitectureRuntimeId()); IHost host = DBLUtils.createHost(instance, event.getHostId(), modelRoot.getHostpropertyContext()); switch (event.getXadlEventType()) { case ADD: logger.info("Adding hostproperties for host " + event.getHostId()); for (Entry<Object, Object> entry : event.getHostProperties().entrySet()) { String name = entry.getKey().toString(); // get or create property IProperty prop = DBLUtils.getHostProperty(host, name); if (prop == null) { prop = DBLUtils.createHostProperty(name, modelRoot.getHostpropertyContext()); host.addHostProperty(prop); } // add values if (entry.getValue() instanceof Iterable<?>) { for (Object o : (Iterable<?>) entry.getValue()) { prop.addValue( DBLUtils.createDescription(o.toString(), modelRoot.getHostpropertyContext())); } } else { prop.addValue( DBLUtils.createDescription( entry.getValue().toString(), modelRoot.getHostpropertyContext())); } } break; case UPDATE: logger.info("Updating hostproperties for host " + event.getHostId()); for (Entry<Object, Object> entry : event.getHostProperties().entrySet()) { String name = entry.getKey().toString(); // get or create property IProperty prop = DBLUtils.getHostProperty(host, name); if (prop == null) { prop = DBLUtils.createHostProperty(name, modelRoot.getHostpropertyContext()); host.addHostProperty(prop); } // update values prop.clearValues(); if (entry.getValue() instanceof Iterable<?>) { for (Object o : (Iterable<?>) entry.getValue()) { prop.addValue( DBLUtils.createDescription(o.toString(), modelRoot.getHostpropertyContext())); } } else { prop.addValue( DBLUtils.createDescription( entry.getValue().toString(), modelRoot.getHostpropertyContext())); } } break; case REMOVE: logger.info("Removing hostproperties from host " + event.getHostId()); for (Entry<Object, Object> entry : event.getHostProperties().entrySet()) { String name = entry.getKey().toString(); IProperty prop = DBLUtils.getHostProperty(host, name); if (prop != null) { host.removeHostProperty(prop); } } break; default: // not supported break; } }