1   package com.atlassian.maven.plugins.amps.product;
2   
3   import java.io.File;
4   import java.util.List;
5   import java.util.Map;
6   
7   import org.apache.maven.plugin.MojoExecutionException;
8   import org.apache.maven.project.MavenProject;
9   
10  import com.atlassian.maven.plugins.amps.MavenGoals;
11  import com.atlassian.maven.plugins.amps.Product;
12  import com.atlassian.maven.plugins.amps.ProductArtifact;
13  
14  public abstract class AbstractWebappProductHandler extends AbstractProductHandler
15  {
16      public AbstractWebappProductHandler(final MavenProject project, final MavenGoals goals, PluginProvider pluginProvider)
17      {
18          super(project, goals, pluginProvider);
19      }
20  
21      public final void stop(final Product ctx) throws MojoExecutionException
22      {
23          goals.stopWebapp(ctx.getInstanceId(), ctx.getContainerId());
24      }
25  
26      @Override
27      protected final File extractApplication(Product ctx, File homeDir) throws MojoExecutionException
28      {
29          // Copy the webapp war to target
30          return goals.copyWebappWar(ctx.getId(), getBaseDirectory(ctx),
31                  new ProductArtifact(getArtifact().getGroupId(), getArtifact().getArtifactId(), ctx.getVersion()));
32      }
33  
34      @Override
35      protected final int startApplication(Product ctx, File app, File homeDir, Map<String, String> properties) throws MojoExecutionException
36      {
37          return goals.startWebapp(ctx.getInstanceId(), app, properties, getExtraContainerDependencies(), ctx);
38      }
39  
40      @Override
41      protected boolean supportsStaticPlugins()
42      {
43          return true;
44      }
45      
46      @Override
47      protected String getLog4jPropertiesPath()
48      {
49          return "WEB-INF/classes/log4j.properties";
50      }
51      
52      protected abstract List<ProductArtifact> getExtraContainerDependencies();
53      protected abstract ProductArtifact getArtifact();
54  }