package org.ow2.choreos.ee.services.update; import java.util.List; import org.apache.log4j.Logger; import org.ow2.choreos.services.UnhandledModificationException; import org.ow2.choreos.services.datamodel.DeployableService; import org.ow2.choreos.services.datamodel.DeployableServiceSpec; public class ServiceUpdater { private DeployableService service; private DeployableServiceSpec newServiceSpec; private String serviceUUID; private List<UpdateAction> actions; private Logger logger = Logger.getLogger(ServiceUpdater.class); /** * * @param service * may be changed by the updateService method * @param serviceSpec */ public ServiceUpdater(DeployableService service, DeployableServiceSpec serviceSpec) { this.service = service; this.serviceUUID = service.getUUID(); this.newServiceSpec = serviceSpec; } public void updateService() throws UnhandledModificationException { logger.info("Requested to update service " + serviceUUID + " with spec " + newServiceSpec); getActions(); applyActions(); logger.info("Service " + serviceUUID + " updated"); } private void getActions() { UpdateActionFactory fac = new UpdateActionFactory(); actions = fac.getActions(service, newServiceSpec); } private void applyActions() { for (UpdateAction action : actions) { try { action.applyUpdate(); } catch (UpdateActionFailedException e) { logger.error("Action '" + action + "' was not applied for service " + serviceUUID); } } } }