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
24
25
26
27 public class StudioFeCruProductHandler extends FeCruProductHandler implements StudioComponentProductHandler
28 {
29
30 public StudioFeCruProductHandler(MavenContext context, MavenGoals goals)
31 {
32 super(context, goals);
33 }
34
35 @Override
36 public String getId()
37 {
38 return STUDIO_FECRU;
39 }
40
41 @Override
42 protected ProductArtifact getArtifact()
43 {
44 return new ProductArtifact("com.atlassian.studio", "studio-fisheye", "RELEASE");
45 }
46
47 @Override
48 public Map<String, String> getSystemProperties(Product product)
49 {
50 Map<String, String> properties = new HashMap<String, String>(super.getSystemProperties(product));
51
52 properties.put("fisheye.dev.mode", "true");
53
54
55 properties.putAll(product.getStudioProperties().getSystemProperties());
56
57
58 return properties;
59 }
60
61 protected void extractProductHomeData(File productHomeData, File homeDir, Product ctx)
62 throws MojoExecutionException
63 {
64 try
65 {
66 copyDirectory(productHomeData, homeDir);
67 }
68 catch (IOException e)
69 {
70 throw new MojoExecutionException(String.format("Can't copy Fisheye's home directory from %s to %s", productHomeData.getAbsolutePath(),
71 homeDir.getAbsolutePath()));
72 }
73 }
74
75 @Override
76 public List<Replacement> getReplacements(Product ctx)
77 {
78 List<Replacement> replacements = super.getReplacements(ctx);
79 replacements.add(new Replacement("%TEST-CONTROL-BIND%", String.valueOf(controlPort(ctx.getHttpPort()))));
80 replacements.add(new Replacement("%TEST-HTTP-BIND%", String.valueOf(this.getDefaultHttpPort())));
81 return replacements;
82 }
83
84 @Override
85 protected void customiseInstance(Product ctx, File homeDir, File explodedWarDir) throws MojoExecutionException
86 {
87
88 StudioProductHandler.addProductHandlerOverrides(log, ctx, homeDir, explodedWarDir, "config.xml");
89 }
90
91 @Override
92 protected void addOverridesToJavaTask(final Product ctx, Java java)
93 {
94
95
96 java.setFork(true);
97 java.setDir(getAppDirectory(ctx));
98 }
99 }