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
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 }