Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagegroovy
import com.deniz.jira.versioning.componentversions.events.*;
import com.deniz.jira.versioning.bundles.events.*;
import com.deniz.jira.versioning.bundles.*;
import com.deniz.jira.versioning.*;
import com.atlassian.jira.component.*;

//We need to load WorklogPROConf. Man. classes differently using getOSGiComponentInstanceOfType
def bundleService = ComponentAccessor.getOSGiComponentInstanceOfType(BundleService.class);

def triggerBuildComponentAndVersionPair(long componentId, long versionId) {
  log.debug("Triggering build for component:{} and version:{}", componentId, versionId);
  def post = new URL("https://httpbin.org/post").openConnection();
  def message = """{\"componentId\":\"${componentId}\", \"versionId\": \"${versionId}\"""";
  post.setRequestMethod("POST")
  post.setDoOutput(true)
  post.setRequestProperty("Content-Type", "application/json")
  post.getOutputStream().write(message.getBytes("UTF-8"));
  def postRC = post.getResponseCode();
  log.debug("==>" + postRC.toString());
  if(postRC.equals(200)) {
      log.debug(post.getInputStream().getText());
  } else {
    log.error("Request failed");
  }
}

def event = parameters.event;

//since we are listening for both events we need to handle them differently
if (event instanceof ComponentVersionReleasedEvent) {
  def componentVersion = event.componentVersion;
  triggerBuildComponentAndVersionPair(componentVersion.componentId, componentVersion.versionId);
} else if (event instanceof BundleReleasedEvent) {
  def componentsOfBundle = bundleService.getComponentsOfBundle(event.bundle.getID());
  componentsOfBundle.each{content -> triggerBuildComponentAndVersionPair(content.componentId, content.versionId)}
}

...