package io.cattle.platform.process.progress; import io.cattle.platform.engine.process.ProcessState; import io.cattle.platform.eventing.EventService; import io.cattle.platform.json.JsonMapper; import io.cattle.platform.object.ObjectManager; import javax.inject.Inject; import org.apache.cloudstack.managed.threadlocal.ManagedThreadLocal; public class ProcessProgressImpl implements ProcessProgress { private static final ManagedThreadLocal<ProcessProgressContext> TL = new ManagedThreadLocal<ProcessProgressContext>(); ObjectManager objectManager; JsonMapper jsonMapper; EventService eventService; @Override public ProcessProgressInstance get() { return TL.get(); } @Override public void init(ProcessState state, int... checkpointWeights) { ProcessProgressContext context = TL.get(); if (context != null) { return; } context = new ProcessProgressContext(state, objectManager, jsonMapper, eventService); context.init(state, checkpointWeights); TL.set(context); } @Override public void checkPoint(String name) { ProcessProgressContext context = TL.get(); if (context == null) { return; } context.checkPoint(name); } @Override public void progress(Integer progress) { ProcessProgressContext context = TL.get(); if (context == null) { return; } context.progress(progress); } @Override public String getCurrentCheckpoint() { ProcessProgressContext context = TL.get(); if (context == null) { return null; } return context.getCurrentCheckpoint(); } public ObjectManager getObjectManager() { return objectManager; } @Inject public void setObjectManager(ObjectManager objectManager) { this.objectManager = objectManager; } public JsonMapper getJsonMapper() { return jsonMapper; } @Inject public void setJsonMapper(JsonMapper jsonMapper) { this.jsonMapper = jsonMapper; } public EventService getEventService() { return eventService; } @Inject public void setEventService(EventService eventService) { this.eventService = eventService; } }