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