private static void rebuildGoogleProjectIfPluginVersionChanged(IProject project) { try { // We're only worried about Google projects if (NatureUtils.hasNature(project, GWTNature.NATURE_ID) || NatureUtils.hasNature(project, GaeNature.NATURE_ID)) { // Find the last plugin version that know the project was built with Version lastForcedRebuildAt = GdtPreferences.getVersionForLastForcedRebuild(project); Version currentPluginVersion = GdtPlugin.getVersion(); if (!lastForcedRebuildAt.equals(currentPluginVersion)) { GdtPreferences.setVersionForLastForcedRebuild(project, currentPluginVersion); BuilderUtilities.scheduleRebuild(project); CorePluginLog.logInfo( "Scheduled rebuild of project " + project.getName() + " because of plugin update (current version: " + currentPluginVersion.toString() + ")"); } } } catch (CoreException e) { CorePluginLog.logError(e); } }
public static String getInstallationId() { String id = GdtPreferences.getInstallationId(); if (id == null) { // Use the current time in millis as the installation id and store it // back to the prefs. id = Long.toString(System.currentTimeMillis()); GdtPreferences.setInstallationId(id); } return id; }
@Override public void start(BundleContext context) throws Exception { super.start(context); plugin = this; logger = new Logger(this); // Force the installation id initialization before SDK registration. getInstallationId(); GdtPreferences.registerSdks(); ProjectUtilities.setWebAppProjectCreatorFactory(WebAppProjectCreator.FACTORY); /* * Execute this on the UI thread. This has the effect of delaying the * execution until the Workbench is running and the UI is available. This is * necessary because the code in this method manipulates the Workbench UI. */ Display.getDefault() .asyncExec( new Runnable() { public void run() { maybeAddNewWizardActionsToWorkbench(); } }); LaunchConfigAffectingChangesListener.INSTANCE.start(); // Load problem severities GdtProblemSeverities.initializeInstance( new Class<?>[] { AppEngineProblemType.class, GWTProblemType.class, RemoteServiceProblemType.class, UiBinderJavaProblemType.class, ClientBundleProblemType.class, ProjectStructureOrSdkProblemType.class, UiBinderTemplateProblemType.class }, GdtPreferences.getEncodedProblemSeverities()); rebuildGoogleProjectsIfPluginVersionChanged(); new ProjectMigrator().migrate(); }