package com.taobao.easyweb.core.app.deploy; import com.taobao.easyweb.core.app.App; import com.taobao.easyweb.core.app.change.AppChangeHolder; import com.taobao.easyweb.core.app.scanner.ScanResult; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; /** * Ӧ�ò����� * * @author jimmey */ @Component public class AppDeployer { private static Map<DeployPhase, List<DeployListener>> listeners = new HashMap<DeployPhase, List<DeployListener>>(); public static void addListener(DeployListener deployListener) { Deployer deployer = deployListener.getClass().getAnnotation(Deployer.class); DeployPhase phase = DeployPhase.COMPILE_GROOVY; if (deployer != null) { phase = deployer.value(); } List<DeployListener> list = listeners.get(phase); if (list == null) { list = new LinkedList<DeployListener>(); listeners.put(phase, list); } list.add(deployListener); } public void deploy(App app, ScanResult result) throws DeployException { //��ֹͣapp���� AppChangeHolder.stop(app); //checkout���� //���ó�ʼ������ for (DeployPhase phase : DeployPhase.getAll()) { List<DeployListener> list = listeners.get(phase); if (list == null) { continue; } for (DeployListener processor : list) { processor.process(result); } } //app�ṩ���� AppChangeHolder.start(app); } }