PageRenderTime 41ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

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

https://bitbucket.org/awei/ac-play-java
Java | 64 lines | 50 code | 10 blank | 4 comment | 1 complexity | b98621ed288a2e6cf165922684d7de88 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.BaseUrl;
  4. import com.atlassian.connect.play.java.util.Environment;
  5. import com.atlassian.fugue.Option;
  6. import play.Application;
  7. import static com.atlassian.connect.play.java.util.Utils.LOGGER;
  8. import static com.atlassian.fugue.Option.option;
  9. import static com.google.common.base.Preconditions.checkNotNull;
  10. import static java.lang.String.format;
  11. public final class AcBaseUrlPlugin extends AbstractPlugin
  12. {
  13. private static final String DEFAULT_BASE_URL = "http://localhost:9000";
  14. public AcBaseUrlPlugin(Application application)
  15. {
  16. super(application);
  17. AC.baseUrl = new ApplicationBaseUrl(checkNotNull(application));
  18. LOGGER.info(format("Resolved base URL of application as '%s'", AC.baseUrl.get()));
  19. }
  20. private static final class ApplicationBaseUrl implements BaseUrl
  21. {
  22. private final Application application;
  23. public ApplicationBaseUrl(Application application)
  24. {
  25. this.application = checkNotNull(application);
  26. }
  27. @Override
  28. public String get()
  29. {
  30. final String baseUrl = getBaseUrlFromEnv().getOrElse(getBaseUrlFromConfiguration());
  31. return stripTrailingSlash(baseUrl);
  32. }
  33. /**
  34. * Strip trailing / which might have been configured by a plugin developer. This can cause issues with double
  35. * slashes and Oauth request validation.
  36. */
  37. private String stripTrailingSlash(final String baseUrl)
  38. {
  39. if (baseUrl.endsWith("/"))
  40. {
  41. return baseUrl.substring(0, baseUrl.length() - 1);
  42. }
  43. return baseUrl;
  44. }
  45. private Option<String> getBaseUrlFromEnv()
  46. {
  47. return option(Environment.getOptionalEnv("BASE_URL", null));
  48. }
  49. private String getBaseUrlFromConfiguration()
  50. {
  51. return application.configuration().getString("application.baseUrl", DEFAULT_BASE_URL);
  52. }
  53. }
  54. }