/** * Copyright 2012 Google Inc. All Rights Reserved. */ package com.google.appengine.appcfg; import com.google.appengine.tools.admin.Application; import com.google.apphosting.utils.config.EarHelper; import com.google.apphosting.utils.config.EarInfo; import java.io.File; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; /** * Rollback an in-progress update. * * @author Matt Stephenson <mattstep@google.com> * @goal rollback * @execute phase="package" */ public class Rollback extends AbstractAppCfgMojo { @Override public void execute() throws MojoExecutionException, MojoFailureException { getLog().info(""); getLog().info("Google App Engine Java SDK - Rolling Back Application"); getLog().info(""); getLog().info("Retrieving Google App Engine Java SDK from Maven"); resolveAndSetSdkRoot(); String appDir = project.getBuild().getDirectory() + "/" + project.getBuild().getFinalName(); getLog().info("Rolling Back Google App Engine Application"); if (EarHelper.isEar(appDir, false)) { EarInfo earInfo = EarHelper.readEarInfo(appDir, new File(Application.getSdkDocsDir(), "appengine-application.xsd")); if (appId == null) { appId = earInfo.getAppengineApplicationXml().getApplicationId(); } File ear = new File(appDir); for (File w : ear.listFiles()) { if (new File(w, "WEB-INF/appengine-web.xml").exists()) { getLog().info("Rolling Back Google App Engine module: " + w.getAbsolutePath()); executeAppCfgCommand("rollback", w.getAbsolutePath()); } } } else { // rollback the application getLog().info("Rolling Back Google App Engine Application"); executeAppCfgCommand("rollback", appDir); } } }