/******************************************************************************* * Copyright (c) 2012 VMWare, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VMWare, Inc. - initial API and implementation *******************************************************************************/ package org.grails.ide.eclipse.test.util; import org.codehaus.groovy.eclipse.core.compiler.CompilerUtils; import org.codehaus.groovy.frameworkadapter.util.SpecifiedVersion; import org.eclipse.core.runtime.Platform; import org.grails.ide.eclipse.core.model.GrailsVersion; import org.osgi.framework.Bundle; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; /** * @author Kris De Volder * * @since 2.8 */ public class GrailsTestUtilActivator implements BundleActivator { public void start(BundleContext context) throws Exception { configureGrailsVersions(); } // private void configureGroovyCompilerVersion() { // dumpGroovyBundles(); // System.out.println("Configuring Groovy compiler for Grails: "+GrailsVersion.MOST_RECENT); // boolean useGroovy18 = GrailsVersion.V_2_0.compareTo(GrailsVersion.MOST_RECENT) <=0; // System.out.println("Use Groovy 18? "+useGroovy18); // if (useGroovy18) { // //Must make sure 18 is enabled // if (CompilerUtils.isGroovy18DisabledOrMissing()) { // assertTrue("Couldn switch compiler versions", CompilerUtils.switchVersions(useGroovy18).isOK()); // } // } else { // //Must make sure 18 is not enabled // if (!CompilerUtils.isGroovy18DisabledOrMissing()) { // assertTrue("Couldn switch compiler versions", CompilerUtils.switchVersions(useGroovy18).isOK()); // } // } // dumpGroovyBundles(); // System.out.println("active groovy bundle is now: "+CompilerUtils.getActiveGroovyBundle()); // } /** * Dum which groovy bundles are there... for debugging purposes */ private static void dumpGroovyBundles() { System.out.println(">>>> Groovy bundles : "); Bundle[] bundles = Platform.getBundles("org.codehaus.groovy", null); for (Bundle bundle : bundles) { System.out.println(bundle + " " + (stateString(bundle.getState()))); } System.out.println("<<<< Groovy bundles"); } private static String stateString(int state) { switch (state) { case Bundle.ACTIVE: return "ACTIVE"; case Bundle.UNINSTALLED: return "UNINSTALLED"; case Bundle.INSTALLED: return "INSTALLED"; case Bundle.RESOLVED: return "RESOLVED"; case Bundle.STARTING: return "STARTING"; case Bundle.STOPPING: return "STOPPING"; default: return "UNKOWN("+state+")"; } } public static void configureGrailsVersions() { System.out.println("user.dir = '"+System.getProperty("user.dir")+"'"); dumpGroovyBundles(); configureGrailsVersions(CompilerUtils.getWorkspaceCompilerLevel()); } public static void configureGrailsVersions(SpecifiedVersion groovyVersion) { switch (groovyVersion) { case _20: System.out.println("Detected Groovy Workspace Version = 2.0"); configureGrails22(); break; case _21: System.out.println("Detected Groovy Workspace Version = 2.1"); configureGrails23(); break; case _23: System.out.println("Detected Groovy Workspace Version = 2.3"); configureGrails24(); break; default: //The groovy compiler level is probably wrong... but anyhoo... configureGrails23(); break; } System.out.println("GrailsVersion.MOST_RECENT = "+GrailsVersion.MOST_RECENT); } private static void configureGrails24() { GrailsVersion.PREVIOUS_PREVIOUS = GrailsVersion.V_2_4_2; GrailsVersion.PREVIOUS = GrailsVersion.V_2_4_3; GrailsVersion.MOST_RECENT = GrailsVersion.V_2_4_4; } private static void configureGrails23() { GrailsVersion.PREVIOUS_PREVIOUS = GrailsVersion.V_2_3_5; GrailsVersion.PREVIOUS = GrailsVersion.V_2_3_7; GrailsVersion.MOST_RECENT = GrailsVersion.V_2_3_8; } private static void configureGrails22() { GrailsVersion.PREVIOUS_PREVIOUS = GrailsVersion.V_2_0_4; GrailsVersion.PREVIOUS = GrailsVersion.V_2_1_0; GrailsVersion.MOST_RECENT = GrailsVersion.V_2_2_4; } public void stop(BundleContext context) throws Exception { } }