PageRenderTime 50ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/app/com/atlassian/connect/play/java/plugin/AcAutoInstallPlugin.java

https://bitbucket.org/awei/ac-play-java
Java | 82 lines | 73 code | 9 blank | 0 comment | 1 complexity | 66f0ee352c5872887b7eb35ddd61eb77 MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.connect.play.java.plugin;
  2. import com.atlassian.connect.play.java.AC;
  3. import com.atlassian.connect.play.java.remoteapps.ConnectClient;
  4. import com.atlassian.connect.play.java.upm.UpmClient;
  5. import com.atlassian.fugue.Pair;
  6. import com.google.common.base.Function;
  7. import com.google.common.collect.ImmutableSet;
  8. import com.google.common.collect.Iterables;
  9. import play.Application;
  10. import play.libs.F;
  11. import java.net.URI;
  12. import java.util.List;
  13. import java.util.Set;
  14. import static com.atlassian.fugue.Pair.pair;
  15. import static com.google.common.collect.Iterables.transform;
  16. public final class AcAutoInstallPlugin extends AbstractDevPlugin
  17. {
  18. private static final Set<URI> AUTOREGISTER_HOSTS = ImmutableSet.of(
  19. URI.create("http://localhost:1990/confluence"),
  20. URI.create("http://localhost:2990/jira"),
  21. URI.create("http://localhost:5990/refapp"));
  22. public AcAutoInstallPlugin(Application application)
  23. {
  24. super(application);
  25. }
  26. @Override
  27. public void onStart()
  28. {
  29. install();
  30. }
  31. public static F.Promise<List<Pair<URI, Boolean>>> install()
  32. {
  33. final Iterable<URI> listeningApplications = Iterables.filter(AUTOREGISTER_HOSTS, new IsApplicationListeningPredicate());
  34. final String playAppBaseUrl = AC.baseUrl.get();
  35. return F.Promise.sequence(transform(listeningApplications,
  36. new Function<URI, F.Promise<? extends Pair<URI, Boolean>>>()
  37. {
  38. @Override
  39. public F.Promise<Pair<URI, Boolean>> apply(URI appUri)
  40. {
  41. return install(appUri, playAppBaseUrl);
  42. }
  43. }));
  44. }
  45. private static F.Promise<Pair<URI, Boolean>> install(final URI appUri, final String playAppBaseUrl)
  46. {
  47. final String baseUrl = appUri.toString();
  48. return new UpmClient(baseUrl)
  49. .install(playAppBaseUrl, new F.Function<Boolean, F.Promise<Boolean>>()
  50. {
  51. @Override
  52. public F.Promise<Boolean> apply(Boolean installed) throws Throwable
  53. {
  54. if (!installed)
  55. {
  56. return new ConnectClient(baseUrl).install(playAppBaseUrl);
  57. }
  58. else
  59. {
  60. return F.Promise.pure(true);
  61. }
  62. }
  63. })
  64. .map(new F.Function<Boolean, Pair<URI, Boolean>>()
  65. {
  66. @Override
  67. public Pair<URI, Boolean> apply(Boolean installed) throws Throwable
  68. {
  69. return pair(appUri, installed);
  70. }
  71. });
  72. }
  73. }