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