Package org.jboss.forge.addon.gradle.projects

Source Code of org.jboss.forge.addon.gradle.projects.GradleManagerImpl

/*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.forge.addon.gradle.projects;

import java.io.File;
import java.util.List;
import java.util.concurrent.CountDownLatch;

import org.gradle.jarjar.com.google.common.collect.Lists;
import org.gradle.tooling.BuildLauncher;
import org.gradle.tooling.GradleConnectionException;
import org.gradle.tooling.GradleConnector;
import org.gradle.tooling.ProjectConnection;
import org.gradle.tooling.ResultHandler;
import org.jboss.forge.furnace.util.Strings;

/**
* @author Adam WyƂuda
*/
public class GradleManagerImpl implements GradleManager
{
   private static class ResultHolder
   {
      private volatile boolean result;
   }

   @Override
   public boolean runGradleBuild(String directory, String task, String profile, String... arguments)
   {
      String gradleHome = System.getenv("GRADLE_HOME");

      GradleConnector connector = GradleConnector.newConnector()
               .forProjectDirectory(new File(directory));
      if (!Strings.isNullOrEmpty(gradleHome))
      {
         connector = connector.useGradleUserHomeDir(new File(gradleHome));
      }
     
      ProjectConnection connection = connector.connect();

      BuildLauncher launcher = connection.newBuild().forTasks(task);

      List<String> argList = Lists.newArrayList(arguments);

      if (!Strings.isNullOrEmpty(profile))
      {
         argList.add("-Pprofile=" + profile);
      }

      launcher = launcher.withArguments(argList.toArray(new String[argList.size()]));

      final ResultHolder holder = new ResultHolder();
      final CountDownLatch latch = new CountDownLatch(1);

      launcher.run(new ResultHandler<Object>()
      {
         @Override
         public void onComplete(Object result)
         {
            holder.result = true;
            latch.countDown();
         }

         @Override
         public void onFailure(GradleConnectionException failure)
         {
            holder.result = false;
            latch.countDown();
         }
      });

      try
      {
         latch.await();
      }
      catch (InterruptedException e)
      {
         e.printStackTrace();
      }

      return holder.result;
   }
}
TOP

Related Classes of org.jboss.forge.addon.gradle.projects.GradleManagerImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.