/maven-amps-plugin/src/main/java/com/atlassian/maven/plugins/amps/product/studio/StudioFeCruProductHandler.java

https://bitbucket.org/mmeinhold/amps · Java · 99 lines · 73 code · 18 blank · 8 comment · 0 complexity · 8ebcf9eada5c55997e763797c00e3821 MD5 · raw file

  1. package com.atlassian.maven.plugins.amps.product.studio;
  2. import static com.atlassian.maven.plugins.amps.product.ProductHandlerFactory.STUDIO_FECRU;
  3. import static org.apache.commons.io.FileUtils.copyDirectory;
  4. import java.io.File;
  5. import java.io.IOException;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import org.apache.maven.plugin.MojoExecutionException;
  10. import org.apache.tools.ant.taskdefs.Java;
  11. import com.atlassian.maven.plugins.amps.MavenContext;
  12. import com.atlassian.maven.plugins.amps.MavenGoals;
  13. import com.atlassian.maven.plugins.amps.Product;
  14. import com.atlassian.maven.plugins.amps.ProductArtifact;
  15. import com.atlassian.maven.plugins.amps.product.FeCruProductHandler;
  16. import com.atlassian.maven.plugins.amps.util.ConfigFileUtils.Replacement;
  17. /**
  18. * Handler for Studio-FeCru
  19. * @since 3.6
  20. */
  21. public class StudioFeCruProductHandler extends FeCruProductHandler implements StudioComponentProductHandler
  22. {
  23. public StudioFeCruProductHandler(MavenContext context, MavenGoals goals)
  24. {
  25. super(context, goals);
  26. }
  27. @Override
  28. public String getId()
  29. {
  30. return STUDIO_FECRU;
  31. }
  32. @Override
  33. protected ProductArtifact getArtifact()
  34. {
  35. return new ProductArtifact("com.atlassian.studio", "studio-fisheye", "RELEASE");
  36. }
  37. @Override
  38. public Map<String, String> getSystemProperties(Product product)
  39. {
  40. Map<String, String> properties = new HashMap<String, String>(super.getSystemProperties(product));
  41. properties.put("fisheye.dev.mode", "true");
  42. // We also add common studio system properties
  43. properties.putAll(product.getStudioProperties().getSystemProperties());
  44. return properties;
  45. }
  46. protected void extractProductHomeData(File productHomeData, File homeDir, Product ctx)
  47. throws MojoExecutionException
  48. {
  49. try
  50. {
  51. copyDirectory(productHomeData, homeDir);
  52. }
  53. catch (IOException e)
  54. {
  55. throw new MojoExecutionException(String.format("Can't copy Fisheye's home directory from %s to %s", productHomeData.getAbsolutePath(),
  56. homeDir.getAbsolutePath()));
  57. }
  58. }
  59. @Override
  60. public List<Replacement> getReplacements(Product ctx)
  61. {
  62. List<Replacement> replacements = super.getReplacements(ctx);
  63. replacements.add(new Replacement("%TEST-CONTROL-BIND%", String.valueOf(controlPort(ctx.getHttpPort()))));
  64. replacements.add(new Replacement("%TEST-HTTP-BIND%", String.valueOf(this.getDefaultHttpPort())));
  65. return replacements;
  66. }
  67. @Override
  68. protected void customiseInstance(Product ctx, File homeDir, File explodedWarDir) throws MojoExecutionException
  69. {
  70. // Note: this config.xml is in the War.
  71. StudioProductHandler.addProductHandlerOverrides(log, ctx, homeDir, explodedWarDir, "config.xml");
  72. }
  73. @Override
  74. protected void addOverridesToJavaTask(final Product ctx, Java java)
  75. {
  76. // Note: FeCru doesn't support asynchronous startup, because setSpawn(true) returns an error
  77. // (output and timeout are forbidden).
  78. java.setFork(true);
  79. java.setDir(getAppDirectory(ctx));
  80. }
  81. }