Advertisement
Guest User

Untitled

a guest
Dec 19th, 2014
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.38 KB | None | 0 0
  1. package windup.plugin;
  2.  
  3. import org.jboss.forge.furnace.Furnace;
  4. import org.jboss.forge.furnace.addons.AddonId;
  5. import org.jboss.forge.furnace.impl.addons.AddonRepositoryImpl;
  6. import org.jboss.forge.furnace.manager.impl.AddonManagerImpl;
  7. import org.jboss.forge.furnace.manager.maven.addon.MavenAddonDependencyResolver;
  8. import org.jboss.forge.furnace.manager.request.AddonActionRequest;
  9. import org.jboss.forge.furnace.manager.spi.AddonDependencyResolver;
  10. import org.jboss.forge.furnace.repositories.AddonRepository;
  11. import org.jboss.forge.furnace.repositories.AddonRepositoryMode;
  12. import org.jboss.forge.furnace.se.FurnaceFactory;
  13. import org.jboss.forge.furnace.versions.SingleVersion;
  14. import org.jboss.forge.furnace.versions.Version;
  15. import org.jboss.forge.furnace.versions.Versions;
  16. import org.jboss.windup.util.exception.WindupException;
  17.  
  18. import java.io.File;
  19. import java.util.ArrayList;
  20. import java.util.List;
  21. import java.util.concurrent.ExecutionException;
  22. import java.util.concurrent.Future;
  23.  
  24. /**
  25.  * Created by samueltauil on 12/19/14.
  26.  */
  27. public class FurnaceInitiator {
  28.  
  29.     public static final String FORGE_ADDON_GROUP_ID = "org.jboss.forge.addon:";
  30.  
  31.     public static void main(String[] args) {
  32.           Furnace furnace = FurnaceInitiator.getFurnace();
  33.           FurnaceInitiator furnaceInitiator = new FurnaceInitiator();
  34.  
  35.         try {
  36. //         furnace.setServerMode(true);
  37.             furnaceInitiator.start(true, true, furnace);
  38. //            furnace.setServerMode(true);
  39. //            System.setProperty("INTERACTIVE", "true");
  40. //            System.setProperty("forge.shell.evaluate", "true");
  41. //            org.jboss.windup:ui,2.0.0.Beta5
  42. //            org.jboss.windup.rules.apps:rules-java,2.0.0.Beta5
  43. //            org.jboss.windup.rules.apps:rules-java-ee,2.0.0.Beta5
  44.  
  45.             furnaceInitiator.install("org.jboss.windup:ui,2.0.0.Beta5", true, furnace);
  46.             furnaceInitiator.install("org.jboss.windup.rules.apps:rules-java,2.0.0.Beta5", true, furnace);
  47.             furnaceInitiator.install("org.jboss.windup.rules.apps:rules-java-ee,2.0.0.Beta5", true, furnace);
  48.  
  49.  
  50.  
  51.         } catch (InterruptedException e) {
  52.             e.printStackTrace();
  53.         } catch (ExecutionException e) {
  54.             e.printStackTrace();
  55.         }
  56.  
  57.  
  58.     }
  59.  
  60.     public FurnaceInitiator(){}
  61.  
  62.     public static Furnace getFurnace() {
  63.  
  64.         // Create a Furnace instance. NOTE: This must be called only once
  65.         Furnace furnace = FurnaceFactory.getInstance();
  66.         // Add repository containing addons specified in pom.xml
  67.         furnace.addRepository(AddonRepositoryMode.MUTABLE, new File("target/addons"));
  68.         // Start Furnace in another thread
  69.         System.setProperty("INTERACTIVE", "false");
  70.  
  71.         Future<Furnace> future = furnace.startAsync();
  72.         try {
  73.             // Wait until Furnace is started and return
  74.             return future.get();
  75.         }
  76.         catch( InterruptedException | ExecutionException ex ) {
  77.             throw new WindupException("Failed to start Furnace: " + ex.getMessage(), ex);
  78.         }
  79.     }
  80.  
  81.     public List<AddonId> getEnabledAddonIds(Furnace furnace)
  82.     {
  83.         List<AddonId> result = new ArrayList<>();
  84.         for (AddonRepository repository : furnace.getRepositories())
  85.         {
  86.             List<AddonId> addons = repository.listEnabled();
  87.             result.addAll(addons);
  88.         }
  89.         return result;
  90.     }
  91.  
  92.     /**
  93.      * Install core addons if none are installed; then start.
  94.      */
  95.     public void start(boolean exitAfter, boolean batchMode, Furnace furnace) throws InterruptedException, ExecutionException
  96.     {
  97.         if (exitAfter)
  98.             return;
  99.  
  100.         if (!batchMode)
  101.         {
  102.             List<AddonId> addonIds = getEnabledAddonIds(furnace);
  103.             if (addonIds.isEmpty())
  104.             {
  105.                 String result = System.console().readLine(
  106.                         "There are no addons installed; install core addons now? [Y,n] ");
  107.                 if (!"n".equalsIgnoreCase(result.trim()))
  108.                 {
  109.                     install("core", batchMode, furnace);
  110.                 }
  111.             }
  112.         }
  113.  
  114.     }
  115.  
  116.     public boolean install(String addonCoordinates, boolean batchMode, Furnace furnace)
  117.     {
  118.         Version runtimeAPIVersion = AddonRepositoryImpl.getRuntimeAPIVersion();
  119.         try
  120.         {
  121.             AddonDependencyResolver resolver = new MavenAddonDependencyResolver();
  122.             AddonManagerImpl addonManager = new AddonManagerImpl(furnace, resolver);
  123.  
  124.             AddonId addon;
  125.             // This allows windup --install maven
  126.             if (addonCoordinates.contains(","))
  127.             {
  128.                 if (addonCoordinates.contains(":"))
  129.                 {
  130.                     addon = AddonId.fromCoordinates(addonCoordinates);
  131.                 }
  132.                 else
  133.                 {
  134.                     addon = AddonId.fromCoordinates(FORGE_ADDON_GROUP_ID + addonCoordinates);
  135.                 }
  136.             }
  137.             else
  138.             {
  139.                 AddonId[] versions;
  140.                 String coordinate;
  141.                 if (addonCoordinates.contains(":"))
  142.                 {
  143.                     coordinate = addonCoordinates;
  144.                     versions = resolver.resolveVersions(addonCoordinates).get();
  145.                 }
  146.                 else
  147.                 {
  148.                     coordinate = FORGE_ADDON_GROUP_ID + addonCoordinates;
  149.                     versions = resolver.resolveVersions(coordinate).get();
  150.                 }
  151.  
  152.                 if (versions.length == 0)
  153.                 {
  154.                     throw new IllegalArgumentException("No Artifact version found for " + coordinate);
  155.                 }
  156.                 else
  157.                 {
  158.                     AddonId selected = null;
  159.                     for (int i = versions.length - 1; selected == null && i >= 0; i--)
  160.                     {
  161.                         String apiVersion = resolver.resolveAPIVersion(versions[i]).get();
  162.                         if (apiVersion != null
  163.                                 && Versions.isApiCompatible(runtimeAPIVersion, new SingleVersion(apiVersion)))
  164.                         {
  165.                             selected = versions[i];
  166.                         }
  167.                     }
  168.                     if (selected == null)
  169.                     {
  170.                         throw new IllegalArgumentException("No compatible addon API version found for " + coordinate
  171.                                 + " for API " + runtimeAPIVersion);
  172.                     }
  173.  
  174.                     addon = selected;
  175.                 }
  176.             }
  177.  
  178.             AddonActionRequest request = addonManager.install(addon);
  179.             System.out.println(request);
  180.             if (!batchMode)
  181.             {
  182.                 String result = System.console().readLine("Confirm installation [Y/n]? ");
  183.                 if ("n".equalsIgnoreCase(result.trim()))
  184.                 {
  185.                     System.out.println("Installation aborted.");
  186.                     return false;
  187.                 }
  188.             }
  189.             request.perform();
  190.             System.out.println("Installation completed successfully.");
  191.             System.out.println();
  192.         }
  193.         catch (Exception e)
  194.         {
  195.             e.printStackTrace();
  196.             System.out.println("> Forge version [" + runtimeAPIVersion + "]");
  197.         }
  198.         return true;
  199.     }
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement