1
2 package com.atlassian.maven.plugins.amps.product.studio;
3
4 import com.atlassian.maven.plugins.amps.MavenContext;
5 import com.atlassian.maven.plugins.amps.MavenGoals;
6 import com.atlassian.maven.plugins.amps.Product;
7 import com.atlassian.maven.plugins.amps.ProductArtifact;
8 import com.atlassian.maven.plugins.amps.product.BambooProductHandler;
9 import org.apache.maven.plugin.MojoExecutionException;
10
11 import java.io.File;
12 import java.util.Arrays;
13 import java.util.HashMap;
14 import java.util.List;
15 import java.util.Map;
16
17 import static com.atlassian.maven.plugins.amps.product.ProductHandlerFactory.STUDIO_BAMBOO;
18 import static com.atlassian.maven.plugins.amps.util.FileUtils.fixWindowsSlashes;
19 import static java.lang.String.format;
20
21
22
23
24
25 public class StudioBambooProductHandler extends BambooProductHandler
26 {
27
28 public StudioBambooProductHandler(MavenContext context, MavenGoals goals)
29 {
30 super(context, goals);
31 }
32
33 @Override
34 public String getId()
35 {
36 return STUDIO_BAMBOO;
37 }
38
39 @Override
40 public ProductArtifact getArtifact()
41 {
42 return new ProductArtifact("com.atlassian.studio", "studio-bamboo", "RELEASE");
43 }
44
45 @Override
46 public void processHomeDirectory(Product ctx, File homeDir) throws MojoExecutionException
47 {
48 super.processHomeDirectory(ctx, homeDir);
49
50 StudioProductHandler.processProductsHomeDirectory(log, ctx, homeDir);
51 }
52
53 @Override
54 protected void customiseInstance(Product ctx, File homeDir, File explodedWarDir) throws MojoExecutionException
55 {
56 StudioProductHandler.addProductHandlerOverrides(log, ctx, homeDir, explodedWarDir);
57 }
58
59 @Override
60 public List<ProductArtifact> getExtraContainerDependencies()
61 {
62 return Arrays.asList(
63 new ProductArtifact("hsqldb", "hsqldb", "1.8.0.5"),
64 new ProductArtifact("jta", "jta", "1.0.1"));
65 }
66
67 @Override
68 public Map<String, String> getSystemProperties(final Product product)
69 {
70 Map<String, String> systemProperties = new HashMap<String, String>(super.getSystemProperties(product));
71
72
73 final String dburl = System.getProperty("amps.datasource.url",
74 format("jdbc:hsqldb:%s/database", fixWindowsSlashes(getHomeDirectory(product).getAbsolutePath())));
75 final String driverClass = System.getProperty("amps.datasource.driver", "org.hsqldb.jdbcDriver");
76 final String username = System.getProperty("amps.datasource.username", "sa");
77 final String password = System.getProperty("amps.datasource.password", "");
78 final String datasourceTypeClass = "javax.sql.DataSource";
79
80 final String datasource = format("cargo.datasource.url=%s", dburl);
81 final String driver = format("cargo.datasource.driver=%s", driverClass);
82 final String datasourceUsername = format("cargo.datasource.username=%s", username);
83 final String datasourcePassword = format("cargo.datasource.password=%s", password);
84 final String datasourceType = "cargo.datasource.type=" + datasourceTypeClass;
85 final String jndi = "cargo.datasource.jndi=jdbc/DefaultDS";
86
87 systemProperties.put("cargo.datasource.datasource",
88 format("%s|%s|%s|%s|%s|%s", datasource, driver, datasourceUsername, datasourcePassword, datasourceType, jndi));
89
90
91 systemProperties.putAll(product.getStudioProperties().getSystemProperties());
92
93 return systemProperties;
94 }
95
96 }