1
2 package com.atlassian.maven.plugins.amps.product.studio;
3
4 import static com.atlassian.maven.plugins.amps.product.ProductHandlerFactory.STUDIO_FECRU;
5 import static org.apache.commons.io.FileUtils.copyDirectory;
6
7 import java.io.File;
8 import java.io.IOException;
9 import java.util.HashMap;
10 import java.util.List;
11 import java.util.Map;
12
13 import org.apache.maven.plugin.MojoExecutionException;
14 import org.apache.tools.ant.taskdefs.Java;
15
16 import com.atlassian.maven.plugins.amps.MavenContext;
17 import com.atlassian.maven.plugins.amps.MavenGoals;
18 import com.atlassian.maven.plugins.amps.Product;
19 import com.atlassian.maven.plugins.amps.ProductArtifact;
20 import com.atlassian.maven.plugins.amps.product.FeCruProductHandler;
21 import com.atlassian.maven.plugins.amps.util.ConfigFileUtils.Replacement;
22
23 public class StudioFeCruProductHandler extends FeCruProductHandler implements StudioComponentProductHandler
24 {
25
26 public StudioFeCruProductHandler(MavenContext context, MavenGoals goals)
27 {
28 super(context, goals);
29 }
30
31 @Override
32 public String getId()
33 {
34 return STUDIO_FECRU;
35 }
36
37 @Override
38 protected ProductArtifact getArtifact()
39 {
40 return new ProductArtifact("com.atlassian.studio", "studio-fisheye", "RELEASE");
41 }
42
43 @Override
44 public Map<String, String> getSystemProperties(Product product)
45 {
46 Map<String, String> properties = new HashMap<String, String>(super.getSystemProperties(product));
47
48 properties.put("fisheye.dev.mode", "true");
49
50
51 properties.putAll(product.getStudioProperties().getSystemProperties());
52
53
54 return properties;
55 }
56
57 protected void extractProductHomeData(File productHomeData, File homeDir, Product ctx)
58 throws MojoExecutionException
59 {
60 try
61 {
62 copyDirectory(productHomeData, homeDir);
63 }
64 catch (IOException e)
65 {
66 throw new MojoExecutionException(String.format("Can't copy Fisheye's home directory from %s to %s", productHomeData.getAbsolutePath(),
67 homeDir.getAbsolutePath()));
68 }
69 }
70
71 @Override
72 public List<Replacement> getReplacements(Product ctx)
73 {
74 List<Replacement> replacements = super.getReplacements(ctx);
75 replacements.add(new Replacement("%TEST-CONTROL-BIND%", String.valueOf(controlPort(ctx.getHttpPort()))));
76 replacements.add(new Replacement("%TEST-HTTP-BIND%", String.valueOf(this.getDefaultHttpPort())));
77 return replacements;
78 }
79
80 @Override
81 protected void addProductHandlerOverrides(Product ctx, File homeDir, File explodedWarDir) throws MojoExecutionException
82 {
83
84 StudioProductHandler.addProductHandlerOverrides(log, ctx, homeDir, explodedWarDir, "config.xml");
85 }
86
87 @Override
88 protected void addOverridesToJavaTask(final Product ctx, Java java)
89 {
90 java.setFork(true);
91 java.setDir(getAppDirectory(ctx));
92 }
93 }