1 package com.atlassian.maven.plugins.amps.product.studio;
2
3 import com.atlassian.maven.plugins.amps.MavenContext;
4 import com.atlassian.maven.plugins.amps.MavenGoals;
5 import com.atlassian.maven.plugins.amps.Product;
6 import com.atlassian.maven.plugins.amps.ProductArtifact;
7 import com.atlassian.maven.plugins.amps.product.JiraProductHandler;
8 import com.atlassian.maven.plugins.amps.util.ConfigFileUtils;
9 import com.atlassian.maven.plugins.amps.util.ConfigFileUtils.Replacement;
10 import com.atlassian.maven.plugins.amps.util.JvmArgsFix;
11 import com.google.common.collect.Lists;
12 import org.apache.maven.plugin.MojoExecutionException;
13
14 import java.io.File;
15 import java.io.FilenameFilter;
16 import java.util.HashMap;
17 import java.util.List;
18 import java.util.Map;
19
20 import static com.atlassian.maven.plugins.amps.product.ProductHandlerFactory.STUDIO_JIRA;
21
22
23
24
25
26 public class StudioJiraProductHandler extends JiraProductHandler implements StudioComponentProductHandler
27 {
28 public StudioJiraProductHandler(final MavenContext context, final MavenGoals goals)
29 {
30 super(context, goals);
31 }
32
33
34 @Override
35 public String getId()
36 {
37 return STUDIO_JIRA;
38 }
39
40 @Override
41 public ProductArtifact getArtifact()
42 {
43 return new ProductArtifact("com.atlassian.jira", "jira-ondemand-webapp", "RELEASE");
44 }
45
46 @Override
47 protected void customiseInstance(Product ctx, File homeDir, File explodedWarDir) throws MojoExecutionException
48 {
49
50
51 List<File> configFiles = Lists.newArrayList();
52 configFiles.add(new File(explodedWarDir, "WEB-INF/classes/entityengine.xml"));
53 configFiles.add(new File(explodedWarDir, "WEB-INF/web.xml"));
54
55 List<Replacement> replacements = Lists.newArrayList();
56 replacements.add(new Replacement("field-type-name=\"postgres72\"", "field-type-name=\"hsql\"", false));
57 replacements.add(new Replacement("schema-name=\"public\"", "schema-name=\"PUBLIC\"", false));
58 replacements.add(new Replacement("%JIRA-HOME%", homeDir.getAbsolutePath()));
59
60 ConfigFileUtils.replace(configFiles, replacements, false, log);
61
62 File importsDir = new File(homeDir, "import");
63 if (importsDir.exists())
64 {
65 configFiles = Lists.newArrayList(importsDir.listFiles(new FilenameFilter()
66 {
67 @Override
68 public boolean accept(File dir, String name)
69 {
70 return name.endsWith(".xml");
71 }
72 }));
73 replacements = Lists.newArrayList(new Replacement("%JIRA-HOME%", homeDir.getAbsolutePath()));
74 ConfigFileUtils.replace(configFiles, replacements, false, log);
75 }
76
77 StudioProductHandler.addProductHandlerOverrides(log, ctx, homeDir, explodedWarDir);
78 }
79
80
81 protected void fixJvmArgs(Product ctx)
82 {
83 final String jvmArgs = JvmArgsFix.empty()
84 .with("-Xms", "256m")
85 .with("-Xmx", "768m")
86 .with("-XX:MaxPermSize=", "512m")
87 .apply(ctx.getJvmArgs());
88 ctx.setJvmArgs(jvmArgs);
89 }
90
91 @Override
92 public Map<String, String> getSystemProperties(Product product)
93 {
94 Map<String, String> properties = new HashMap<String, String>(super.getSystemProperties(product));
95
96
97 properties.putAll(product.getStudioProperties().getSystemProperties());
98
99 return properties;
100 }
101 }